2016-08-09 9 views
-1

Я хочу измерить TPS ReentrantLock и Synchronization. В то же время я хочу нарисовать диаграмму, чтобы показать изменение, когда количество потоков продолжается.Как сравнить TPS ReentrantLock и синхронизацию

Но сейчас, я не могу найти удовлетворенных инструменты для завершения 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. Попробуй. Btw блокировка чтения - записи на порядок быстрее, чем синхронизированный блок в случаях раздора, особенно если вы читаете операции по притирке с помощью операций записи.

+0

Я пробовал JMH. Это эффективный способ. Спасибо. – StackNow