簡體   English   中英

程序執行時間

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM