当元件变得很多时,TBtools 继续可视化就会变得很慢......这主要有两方面原因:
- 调试发现 Java 的 draw 方法就是比 fill 方法慢数十倍,这个无解;
- 我写 JIGplot 的时候,考虑的还是单线程处理
昨天发烧躺了一天,没啥能做的,也就开始胡思乱想。突然想着,早期我写 JJplot2 的时候 Java 内部自动实现了双缓冲,那我自己把元件分一分,都画成图(类似图层),然后再拼起来不就可以了?
这个对于用户来说,其实几乎是没有感觉(除了 DrawImage 可能会有一点点抗锯齿带来的模糊)
说干就干。今天起来我即测试了想法,
完美实现.....
现在对于 TBtools 的所有图片输出,只要元件超过 1000 个,自动启动多线程(目前设置 4 个线程)。简单测试了下,尤其对于相对复杂的 Circos 图,加速比较明显(尽管还是无法加速到极其顺畅)。估计还是要再想想办法....
不过目前来说,估计至少加速了100倍?估计是 100ms 变成 1 ms。
用了才知道~
网友评论