【发布时间】:2015-07-12 16:30:21
【问题描述】:
我有一段代码需要绘制数千行(6000 到 50000 之间)。
我随后修复了一个不相关的错误,暴露了一些有趣的东西;也就是说,当这些线条很长(比如 30k 像素)时,drawLine 函数占用了我 95% 的代码时间,而线条只有 1000 像素长时,它只占用了 15% 的时间。
线条颜色相同,宽度固定(1px)
为什么长线绘制这么慢?我有哪些选项可以加快速度,而不仅仅是长线,是否有可以使用的渲染提示?我已经在运行这个线程了。
【问题讨论】:
-
您可以将线条绘制到后备缓冲区(使用
BufferedImage),但这可能无法解决问题。如果不知道实际物理绘图过程的底层实现,就不可能知道。下一个问题可能是,你为什么需要这么长的行? -
@MadProgrammer 通常我不会(不是 30k),但我仍然需要画很长的线(大型网络的可视化),但我确实需要画几千长的线较大的网络,如果我可以在平均情况下利用每条线路的小幅改进,那将是巨大的。奇怪的是,画线(甚至是“快速”线)比构建网络、发现网络结构和运行布局算法的总时间还要长。
-
@FoggyDay 很少有边缘(主要是短边缘),当我滚动视口时会发生什么,是否需要重新绘制所有新可见的线条?