1

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

  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. 帕斯卡 -now然后使用时差MilliSecondsBetween()

基于处理器时间的比较

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

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

  3. C -clock()那么时差

  4. 帕斯卡-getTickCount64然后是时差//我不确定这个,你能给出建议吗?

4

1 回答 1

3

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

比那更多的:

  • 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
...

更多关于时间命令

对于 windows 有一个 powershell cmd-let Measure-Command更多关于它

于 2021-04-28T21:55:18.087 回答