哪种更有效的方式来监控长时间运行代码的进度?在屏幕上打印或登录到文本文件?

问题描述:

我有一个java代码,作为代码的一部分,它处理一个非常大的矩阵(100万乘以400万),并且在它崩溃之前需要几个小时才能运行!哪种更有效的方式来监控长时间运行代码的进度?在屏幕上打印或登录到文本文件?

我想监视代码的进度,所以知道它何时耗尽内存并崩溃已经处理的矩阵的百分比。

我想添加一个命令,每1000次迭代就在屏幕上打印一个计数器(相对于主操作循环)。或将计数器记录在文本文件中。

这是个好主意吗?还是会进一步减慢我已经很慢的代码?毕竟我添加了条件验证检查(检查第1000次迭代)和文件写入操作。

java中的任何标准解决方案?

如果没有用于监视进度的标准方法或函数,这会更有效,可以将我自己的日志写入文件或在屏幕上打印?

奖金问题:在Python中呢?任何内部或标准库用于此追溯?

感谢

+0

这是非常广泛/模糊的。基本日志记录不是时间或处理器密集型的。尝试并找出答案。 – tnw

而不必看这个怎么样代码确实任何情况下,我的建议是,你可以把每1000 迭代的if条件检查,然后做一些事情(打印语句,计算,输出到日志,检查或你有什么)。这if条件对性能的影响是非常微不足道的,除非里面的if条件的身体进行某种昂贵的计算模量表达昂贵的计算电脑!)的。

Python代码:

for i in range(100000): # Loop symbolizing your code. 
    if i%1000 == 0: # Every 1000th iteration do something. 
     print "Progress" # Do something. 

话虽这么说,除非你打算在标准输出用于实时几个小时盯着;或滚动虽然(什么可能是非常大的)stdout日志这似乎不是最有效的想法。我建议你在这个程序运行时收集元数据的时候写出这个程序的错误报告(函数?),如果你还没有收集元数据,就会提出单元测试。