2011-06-20 5 views
3

Есть ли программное обеспечение/веб-сайт, на котором я могу представить свои коды на C, C++ и Java и получить статистику, такую ​​как время выполнения программы, используемая память? Мне интересно провести сравнение одного и того же кода на разных языках и получить оценку того, какие структуры данных/операции лучше подходят для какого языка.Время выполнения программы

+0

Если вы ищете программное обеспечение, желательно предоставить платформу для вас. Т.е.: win/linux/mac/... –

+0

Почему бы вам не проверить его на нашей локальной системе вначале, разве это не было бы достаточным для целей сравнения? –

+0

@ Avada- У меня все трое, так скажите мне, кто-нибудь или все! – Appster

ответ

4

Вы можете вставить свою программу в ideone, и она сообщит вам время выполнения и потребление памяти.

+0

На самом деле это ТОЧНО, на что я смотрел! Огромное спасибо. Я вернусь к голосованию, когда у меня будет репутация 15 лет. – Appster

1

Это называется benchmarking, и вы можете сделать это сами. Дело в том, что многие другие переменные влияют на результаты, поэтому было бы лучше контролировать среду и измерять производительность вашей программы, пытаясь устранить как можно больше внешних переменных.

Например, рекомендуется делать все измерения всех программ на же машины с окружающей средой в же, насколько это может быть достижимо.

+1

Это фактически не отвечает на вопрос. Если вы скажете ему, что он может сделать это сам, разве вы не должны сказать, как это может быть достигнуто? –

6

Сделай сам. На * NIX машины (например, Linux и OSX) просто запустить из терминала:

time java YourJavaProgram 

или

time ./YourCProgram 

В Windows вы можете write a little batch script сделать эквивалент.

+0

Это может быть предвзято за разное время запуска до фактического выполнения некоторого кода. –

+0

Он попросил время выполнения программы. Время запуска - часть времени выполнения программы. –

+0

Звучит неплохо, спасибо! – Appster

0

Если вы хотите получить контрольную точку функций, использование «времени» нечестно. Вы должны написать следующее на своем языке.

time_before = get_now() 
// do something 
span = get_time() - time_before 
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); 
    } 
} 
Смежные вопросы