[英]Program execution time
是否有軟件/網站,我可以提交我的C,C ++和Java代碼,並獲得程序執行時間,使用的內存等統計信息? 我有興趣對不同語言的相同代碼進行比較,並估計哪種數據結構/操作更適合哪種語言。
自己做。 在* nix機器(例如Linux和OSX)上,只需從終端運行:
time java YourJavaProgram
要么
time ./YourCProgram
在Windows上,您可以編寫一個小批處理腳本來執行等效操作。
您可以將程序粘貼到ideone ,它將告訴您執行時間和內存消耗。
程序的總使用/可用內存可以通過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);
}
}
這稱為基准測試 ,你可以自己做。 問題是許多其他變量會影響結果,因此最好控制環境並測量程序的性能,盡量消除盡可能多的外部變量。
例如,建議對同一台機器上的所有程序進行所有測量,並使用相同的環境,盡可能多地進行測量。
如果你想獲得功能的基准,使用“時間”是不公平的。 你應該用你的語言寫下面的內容。
time_before = get_now()
// do something
span = get_time() - time_before
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.