2017-07-27 1 views
0

Javaプロジェクトでdsljsonを実装すると、これが正しくないことがわかります。それは非常に遅く、実装が難しいです。JavaプロジェクトのDSL-Jsonが遅すぎる

私は新しい作成JsonObject

public static class abc implements JsonObject { 

    public final int x; 
    public final String s; 

    public abc(int x, String s) { 
     this.x = x; 
     this.s = s; 
    } 

    public void serialize(JsonWriter writer, boolean minimal) { 
     //parse the instance of object (abc) to json-string 
    } 

    public static final JsonReader.ReadJsonObject<abc> JSON_READER = 
            new JsonReader.ReadJsonObject<abc>() { 
     public abc deserialize(JsonReader reader) throws IOException { 
      // Use jsonreader and common json converter (numberconverter, 
      // stringconverter) to parse json-string to an 
      // instance of object (abc) 
     } 
    }; 
} 

から実装する新しいオブジェクトを作成:DslJson<Object> dslJson = new DslJson<Object>();は、それを使用する場合、「シリアライズ」/「デシリアライズ」呼び出すことを。

私の実装は正しくないので、それは遅すぎると思います。 これについての経験や例があれば、libあなたはそれについてあなたのアイデアを教えてもらえますか?

  1. dsljsonを使用する別の方法はありますか?

  2. DslJsonJackSonのように使用できませんか?

    ObjectMapper mapper = new ObjectMapper(); 
    String jsonInString = "{\"age\":33,\"messages\":[\"msg 1\",\"msg 2\"], 
             \"name\":\"mkyong\"}"; 
    User user1 = mapper.readValue(jsonInString, User.class); 
    
+0

「dsljsonは最高のlibがあるが、誰が言っているのでしょうか? (おそらく作者に加えて)そして、それはどうやってそれが遅すぎるかを測定しましたか?これを見てみましょう:https://stackoverflow.com/questions/16230726/what-is-the-fastest-way-to-deserialize-json-in-javaそして/または "fast json parser"のGoogle。 –

+1

これは、Java JSONライブラリのシリアル化と逆シリアル化のパフォーマンステスト(https://github.com/fabienrenaud/java-json-benchmark)です。私のプロジェクトでは、パフォーマンスを確認するために約30000レコードを使います。 – user2414557

+0

他の誰かが言うように、最も速いものを選ぶのではなく、あなた自身でいくつかのライブラリを試すことをお勧めします。彼らは間違いを犯している可能性があります。間違ったやり方で別のlibを使用すると表示される可能性があります。あなたは誤って構文解析を測定している可能性があります、誰かが伝えるための方法はありません。 –

答えて

0

ライブラリリポジトリにいくつかの例は、例えば、ありますしようとするhttps://github.com/ngs-doo/dsl-json/blob/master/examples/Maven/src/main/java/com/dslplatform/maven/Example.java#L82

いくつかの点:

  • 再利用dslJsonインスタンス - それはテスト中に、それを複数回再作成するために高価なのです
  • ストリングの使用を避ける - byte []またはStreamsはGCに優しいデータ型です

DslJsonは(あなたがより多くのコードを表示する必要があることを意味 - あなたがテストしているかを正確に/ベンチングライブラリー)セットアップ:)と間違って何かがある最速、最も可能性が高いではない場合

+0

はい。私はこの例を知っていたが、それは十分ではないように見えるので、私は地元で走れない。 別のスレッドで完全な例を共有します。 – user2414557