技术之路,永无止境!
delphi吧
全部回复
仅看楼主
level 13
yayongm5 楼主
先感慨一下,然后再说事情。
从入门那天开始就一直在折腾日志这个东西,转眼间都NN多年过去了,现在都不敢说日志折腾得好。但是,有些东西显然还是值得絮叨絮叨的。
1.FormatDateTime,普通应用根本不会有人在意这个东西的性能,显然,要是1秒钟超过10000条甚至是更多的调用时,这个性能就很可怕了。曾做过简单测试,循环1M次竟然耗时3700ms,换上FastMM,依然耗时600ms。只好使用优化方式进行处理,优化方式:缓存!这么折腾后,耗时变为140ms,如果用上专门优化的DateTime函数,速度应该会更快。这么优化一下,性能提升接近30倍!想想还是很可怕的。
2.在Memo中显示日志,每秒钟显示100条估计没啥难度。但是,每秒钟显示10000条呢?有没有试过Windows的刷新极限呢?我这烂机器大概在15000条/秒的时候Memo才会失去响应,当然,这还没有优化,改天优化过再试试看。
貌似很简单的事情,其实做起来好难好难。。。学无止境!努力!
2017年10月27日 05点10分 1
level 13
yayongm5 楼主
知道的越多,越明白自己有多菜!菜到都不敢说话了。。。
2017年10月27日 05点10分 2
吧务
level 14
我5年前的破笔记本上1M次调用Now花了264ms,1M次调用Now并format花了341ms。
2017年10月27日 10点10分 3
level 13
yayongm5 楼主
界面最花时间,其次是字符串处理,再次是内存分配,归根结底是内存管理。
2017年10月27日 23点10分 4
吧务
level 14
优化是个坑。就拿楼主举例的FormatDateTime来说吧,至少需要考虑以下条件:
1:Format格式是否会变化。
2:输入的时间是大致递增的还是基本乱序的,如果乱序,波动是毫秒级还是秒级还是年月日级。
3:输出格式是否包括毫秒。
4:是在单线程里调用还是在多线程里调用。
这些前提搞清楚了,才能做针对性的优化。
2017年10月28日 01点10分 5
说得很详细。对于日志来说,每秒钟调用10000次的频率还是非常值得优化的。性能提升太明显了。
2017年10月30日 22点10分
level 13
我只想说,有些需求现实里根本用不到。
如何权衡,要看实际情况。
2017年10月28日 16点10分 6
1