为什么我的简单画线算法比 Bresenham 更快

Why is my naive line drawing algorithm faster than Bresenham

我实现了简单的画线算法和 bresenham 算法。当我 运行 程序有 1000 行时,朴素的画线算法比 bresenham 算法快。谁能解释为什么? 这是我的两种方法的代码

def simpleLine(x1, y1, x2, y2):
dy = y2-y1;
dx = x2-x1;
x = x1

    m = dy/dx;
    b = y1-m*x1;
    if(x1>x2):
        x1,x2 = x2,x1
    x=x1
    while(x<=x2):
        y=m*x+b;
        PutPixle(win,x,round(y));
        x=x+1

'

def BresenhamLine(x1, y1, x2, y2):

dx = abs(x2 - x1)
dy = abs(y2 - y1)


p = 2 * dy - dx
duady = 2 * dy
duadydx = 2 * (dy - dx)

x = x1
y = y1
xend = x2
if(x1 > x2):
    x, y,xend = x2, y2,x1




while(x < xend):
    PutPixle(win,x,y)
    x =x+1
    if(p<0):


        p = p + 2*dy
    else:

        y = y-1 if y1>y2 else y+1
        p = p+2*(dy-dx)

Bresenham 的算法是为与您的 python 环境具有不同性能特征的语言和机器发明的。特别是浮点数学比整数数学和分支昂贵得多的系统上的低级语言。

在 Python 中,您的简单版本速度更快,即使它使用浮点数和舍入,因为 Python 速度慢并且每个像素执行的 python 操作更少。单个整数或浮点运算之间的任何速度差异与仅执行 python 东西的成本相比相形见绌。