我想確定哪個程序在使用的術語內存和時間上更好更快。 我面對,我需要聲明一個變量的問題,我有兩個aproaches如何使用eclipse測量一個簡單的java程序的性能
- 使用靜態變量
- 使用默認的變量
我要測試的程序是速度更快,佔用更少的時間和記憶。
這可能是差異很小,但我仍然想知道哪個是快速程序。
他們無論如何都在使用它,我可以衡量一個簡單而複雜的程序的性能。
我想確定哪個程序在使用的術語內存和時間上更好更快。 我面對,我需要聲明一個變量的問題,我有兩個aproaches如何使用eclipse測量一個簡單的java程序的性能
我要測試的程序是速度更快,佔用更少的時間和記憶。
這可能是差異很小,但我仍然想知道哪個是快速程序。
他們無論如何都在使用它,我可以衡量一個簡單而複雜的程序的性能。
你需要的是使用一個分析器。
看到這裏,
http://www.eclipse.org/tptp/home/documents/tutorials/profilingtool/profilingexample_32.html
好運。
你如何做一個非常簡單和容易的基準?
long start = System.currentTimeMillis();
// do your operation
System.out.println("operation took " + System.currentTimeMillis() - start + "milliseconds");
這會輸出操作花了多長時間。通常,如果操作不是那麼耗時,它不會檢測到任何差異。因此,你應該循環你想要進行基準測試的操作,比如10000次。
您可以簡單地在操作前後使用System.currentTimeMillis()
並找出差異。
但是,如果時差太小,您可能無法實現它。 (由於操作過程中的時間取決於各種其他因素)。您可能希望使用循環對大量(例如100萬次)運行相同的操作,並查找所需的平均時間。
或者您可以使用上面@ wa11a所述的一些外部分析器。
但請注意, 靜態變量在加載類時加載,其中正常變量在需要時加載(類加載後)。
因此,靜態變量會表現得更好,因爲它們已經加載了類並在那裏呆了很久。
但是,製作一個靜態變量有它自己的缺點。它不能通過使用OOP的概念來擴展。
靜態和默認變量有它們自己的用法。使用適合您的案例。
靜態變量在class load時加載並持續很長時間它顯示靜態變量在處理時間上是好的,但是它增加了編譯時間並且耗費了更多的內存而不是默認變量。 –
可能[重複](http://stackoverflow.com/questions/2713940/eclipse-java-profiler)。 – npinti
答案可能取決於您使用的JVM。或者如果你正在運行客戶端或服務器模式。或者如果你的意思是解釋模式或JIT'ed。可能還有你正在使用的操作系統。以及您正在運行的架構。我的建議:不要考慮它是否有意義*使變量靜態或不變。 – aioobe
@aioobe感謝您的回覆和時間。我有一個共同的操作系統(窗口10)和Jvm(jdk 1.7。60)用於靜態變量和默認變量。所以我不認爲提供的輸入會影響性能。我真的很感激,如果你提供任何筆記的鏈接,我可以找到更多關於它的信息。我還有一個問題。它的編譯和處理時間取決於(不同的)不同的操作系統。如果答案是肯定的,那麼java如何獨立於平臺? –