2016-08-09 15 views
-1

ReentrantLockとSynchronization.AtのTPSを測定したい同じ時間スレッドのカウントが進むにつれて変化を示すグラフを描画する必要があります。ReentrantLockと同期化のTPSを比較する方法

しかし、今、私はit.The結果を完了するために、満足なツールを見つけることができませんが、この絵のようなものです: The Example

は私がそれを達成するのを助けることができます任意のツールや例はありますか?

ありがとうございました! 私はいくつかのコードを書いていますが、私はエレガントにデータを収集するのが得意ではありません。

private ReentrantLock lock = new ReentrantLock(); 

public synchronized void testSynchronized() { 
    sleepRandomTime(); 
} 

public void testReentrantLock() { 
    lock.lock(); 
    try { 
     sleepRandomTime(); 
    } finally { 
     lock.unlock(); 
    } 
} 

private void sleepRandomTime() { 
    long sleepTime = (int) (Math.random() * 100); 
    try { 
     Thread.sleep(sleepTime); 
    } catch (InterruptedException e) { 
     Thread.currentThread().interrupt(); 
     throw new RuntimeException(e); 
    } 
} 

public class ThreadTest1 extends Thread { 
    @Override 
    public void run() { 
     testSynchronized(); 
    } 
} 

public class ThreadTest2 extends Thread { 
    @Override 
    public void run() { 
     testReentrantLock(); 
    } 
} 
+0

これまでに何を試しましたか?最初は、測定しようとしている作業を実行するプログラムを作成し、その結果を表示することができます。チャートを描くことはそれ自身の質問に値する。 – jokka

+0

今、私はいくつかのコードを追加しています。まだ私はTPSを表示するためのデータを収集するための効果的な方法を見つけることができません。ありがとう – StackNow

答えて

0

私はJMHを使用しています。それを試してみてください。競合が発生した場合、特に書き込み操作によるラッピングを介した読み取り操作を行っている場合は、読み取り/書き込みロックが同期ブロックよりも数桁高速です。

+0

私はJMHを試してみました。ええ、それは効果的な方法です。ありがとう – StackNow

関連する問題