【问题标题】:Measure execution time in different languages测量不同语言的执行时间
【发布时间】:2021-07-22 05:55:51
【问题描述】:

我正在做一个项目,其目的是比较不同语言的排序算法。我的比较有两种类型:

  1. 基于日历时间的比较
  2. 基于处理器时间的比较

我想知道,如果我可以比较这个方法/功能/程序:

基于日历时间的比较

  1. Java - System.nanoTime() 然后时差 /1000000 毫秒

  2. Python - time.time() 然后时差 *1000

  3. C - gettimeofday() 然后

     totalTime = (end.tv_sec - start.tv_sec) * 1e6;
     totalTime = (totalTime + (end.tv_usec -  start.tv_usec)) * 1e-3;
    
  4. Pascal - now然后使用MilliSecondsBetween()时差

基于处理器时间的比较

  1. Java - getThreadCpuTime() 然后是时差

  2. Python - thread_time() 然后是时差

  3. C - clock() 然后是时差

  4. Pascal - getTickCount64 然后是时差 //这个我不太清楚,你能给点建议吗?

【问题讨论】:

  • 提示:像time 这样的命令可以处理任何你扔给它的东西。

标签: java python c pascal time-measurement


【解决方案1】:

我会使用外部工具进行此类测量。 必须记住,性能测量是一个棘手的领域,您必须确保每个实施的环境条件和输入均等。

不止于此:

  • C 程序的性能可能因所使用的编译器和编译器标志而异。
  • python 程序的性能将取决于解释器实现 Cython 或 Jython 等。
  • 有多种java实现OpenJDK、Oracle java等。

真的很难比较不同语言的算法实现性能,因为有很多因素。

作为测量工具你可以从linuxtime命令入手:

time java_program
# some output
real    0m20.608s
user    0m0.007s
sys 0m0.000s

time c_program
# some output
real    0m20.608s
user    0m0.007s
sys 0m0.000s
...

More about time command

对于 Windows,有一个关于它的 powershell cmd-let Measure-Commandmore

【讨论】:

    猜你喜欢
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-29
    • 2020-07-07
    • 1970-01-01
    • 2013-03-28
    相关资源
    最近更新 更多