程序执行时间

时间:2011-06-20 09:15:29

标签: java c++ c memory execution

是否有软件/网站可以提交我的C,C ++和Java代码并获取程序执行时间,使用的内存等统计信息?我有兴趣对不同语言的相同代码进行比较,并估计哪种数据结构/操作更适合哪种语言。

5 个答案:

答案 0 :(得分:6)

自己动手。在* nix机器(例如Linux和OSX)上,只需从终端运行:

time java YourJavaProgram

time ./YourCProgram

在Windows上,您可以write a little batch script执行相同操作。

答案 1 :(得分:4)

您可以将程序粘贴到ideone,它会告诉您执行时间和内存消耗。

答案 2 :(得分:1)

这称为 benchmarking ,您可以自己动手。问题在于许多其他变量会影响结果,因此最好控制环境并测量程序的性能,尽量消除尽可能多的外部变量。

例如,建议对相同机器上的所有程序进行所有测量,并使用相同环境,尽可能多地进行测量。

答案 3 :(得分:0)

如果你想获得功能的基准,使用“时间”是不公平的。你应该用你的语言写下以下内容。

time_before = get_now()
// do something
span = get_time() - time_before

答案 4 :(得分:0)

程序的总使用/可用内存可以通过java.lang.Runtime.getRuntime();

在程序中获得。

运行时有几种与内存相关的方法。以下编码示例演示了它的用法。

package test;

import java.util.ArrayList;
import java.util.List;

public class PerformanceTest {
  private static final long MEGABYTE = 1024L * 1024L;

  public static long bytesToMegabytes(long bytes) {
    return bytes / MEGABYTE;
  }

  public static void main(String[] args) {
    // I assume you will know how to create a object Person yourself...
    List<Person> list = new ArrayList<Person>();
    for (int i = 0; i <= 100000; i++) {
      list.add(new Person("Jim", "Knopf"));
    }
    // Get the Java runtime
    Runtime runtime = Runtime.getRuntime();
    // Run the garbage collector
    runtime.gc();
    // Calculate the used memory
    long memory = runtime.totalMemory() - runtime.freeMemory();
    System.out.println("Used memory is bytes: " + memory);
    System.out.println("Used memory is megabytes: "
        + bytesToMegabytes(memory));
  }
} 

使用System.currentTimeMillis()获取开始时间和结束时间并计算差异。

package performance.test;

class TimeTest1 {
  public static void main(String[] args) {

    long startTime = System.currentTimeMillis();

    long total = 0;
    for (int i = 0; i < 10000000; i++) {
      total += i;
    }

    long stopTime = System.currentTimeMillis();
    long elapsedTime = stopTime - startTime;
    System.out.println(elapsedTime);
  }
}