2016-03-24 3 views
0

私はいくつかのデータ構造をテストするために、そのメソッドの追加を試みています。一つのために:どんなに私はFileHandlerの()メソッドでtestSizeや出力ファイル名を変更する方法ロガーはすべてのイベントをロギングしませんか?

import java.io.IOException; 
import java.util.Deque; 
import java.util.logging.ConsoleHandler; 
import java.util.logging.FileHandler; 
import java.util.logging.Handler; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import java.util.logging.SimpleFormatter; 

import edu.sdsu.cs.datastructures.LinkedList; 
import edu.sdsu.cs.datastructures.SlowDeque; 

public class DequeDriver<E> { 
    final Logger myLogger = Logger.getLogger("***.****.**.DequeDriver"); 
    static FileHandler logFile; 
    static SimpleFormatter formatterTxt; 
    private Deque<E> dut; 


    //    Construct the Deque and test it   // 
    private DequeDriver() throws SecurityException, IOException { 
     initLogger(); 
     myLogger.info("Running SlowDeque: "); 
     dut = new SlowDeque<E>(); 
     runTest(dut); 
     myLogger.info("Running with LinkedList: "); 
     dut = new LinkedList<E>(); 
     runTest(dut); 

    } 
    //    Run tests on the Deque    // 
    @SuppressWarnings("unchecked") 
    private void runTest(Deque<E> dequeUnderTest){ 
     int testSize = 1000; 
     long startTime; 
     long endTime; 
     for(int i = 1; i <= 10; i++){ 
      startTime = System.nanoTime();; 
      for(long a = 0; a < testSize * i; a++){ 
       dequeUnderTest.add((E) new Long(a)); 
      } 
      endTime = System.nanoTime(); 
      myLogger.info("Adding " + (i * testSize) + " items took: " + (endTime - startTime) + " milliseconds."); 
     } 

    } 

    public static void main(String[] args) { 
     try{ 
      new DequeDriver<Long>(); 
     } catch (SecurityException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 



    void initLogger() throws SecurityException, IOException { 
     disableConsoleLogger(); 
     logFile = new FileHandler("DequeDriver.xml"); 
     myLogger.setLevel(Level.INFO); 
     myLogger.addHandler(logFile); 
    } 
    void disableConsoleLogger() { 
     Logger rootLogger = Logger.getLogger(""); 
     Handler[] handlers = rootLogger.getHandlers(); 
     if (handlers[0] instanceof ConsoleHandler) { 
      rootLogger.removeHandler(handlers[0]); 
     } 
    } 
} 

、私はまだ唯一の方法)(runtestsと書いから「実行と...」出力と2つの出力を得ます1000、1つは10000です。

私はこれに慣れていませんか?私のIDEはEclipseです。

+0

あなたが本当にJMHを使用して代わりに – tddmonkey

答えて

0

SlowDequeBlockingQueueに置き換えてコードをテストしたところ、ロギングが機能しています。

LinkedListSlowDequeの実装が必要に応じて機能していることを確認してください。

import edu.sdsu.cs.datastructures.LinkedList; import edu.sdsu.cs.datastructures.SlowDeque;

</record> 
<record> 
    <date>2016-03-24T13:06:36</date> 
    <millis>1458846396265</millis> 
    <sequence>9</sequence> 
    <logger>DequeDriver</logger> 
    <level>INFO</level> 
    <class>DequeDriver</class> 
    <method>runTest</method> 
    <thread>1</thread> 
    <message>Adding 9000 items took: 1512513 milliseconds.</message> 
</record> 
<record> 
    <date>2016-03-24T13:06:36</date> 
    <millis>1458846396267</millis> 
    <sequence>10</sequence> 
    <logger>DequeDriver</logger> 
    <level>INFO</level> 
    <class>DequeDriver</class> 
    <method>runTest</method> 
    <thread>1</thread> 
    <message>Adding 10000 items took: 1547532 milliseconds.</message> 
</record> 
<record> 
    <date>2016-03-24T13:06:36</date> 
    <millis>1458846396267</millis> 
    <sequence>11</sequence> 
    <logger>DequeDriver</logger> 
    <level>INFO</level> 
    <class>DequeDriver</class> 
    <method>&lt;init&gt;</method> 
    <thread>1</thread> 
    <message>Running with LinkedList: </message> 
</record> 
</log> 
+0

おかげで、独自のソリューションを転がりをご覧くださいベンチマークコードにしたい場合、私は助けに感謝。私はそれを修正しましたが、問題はEclipseのライブラリでした。一度私がそれらをリロードしたら、それは完全に働いた。 – Justidude

+0

これを聞いてうれしい:) – haifzhan

関連する問題