0

私は、1日に何百万回も日付を扱う作業を行う予定です。XML フィードからの日付を次のように処理する XMLGregorianCalendar を作成しました。

XMLGregorianCalendar xCalEst = null;
xCalEst = DatatypeFactory.newInstance().newXMLGregorianCalendar("2011-08-09T21:50:00Z");

日付文字列が別のソースから取得される場所。これを何度も行う必要があるため、パフォーマンス上の理由から、カレンダーを静的として作成し、一度だけ作成する必要があります。問題は、新しい着信日付文字列でカレンダーをリセットする (簡単な) 方法がないことです。

IE: 私ができるようにしたいのは、次のようなものです: xCalEst.reset("2011-08-09T21:55:00Z");

私はパフォーマンスに過度に関心があり、オブジェクトが毎回作成および破棄されるようにしていますか、それともこれを行う簡単な方法はありますか?

私は古い C プログラマーであり、Java を使い始めたばかりであることに注意してください。

4

1 に答える 1

0

試したことはありませんが、 や などの方法setTimesetTimeZone利用可能です。この方法は、たとえば 1 つのスレッドでメッセージを順次送信する場合にのみ機能します。Java は (C とは異なり) オブジェクト指向言語であるため、その自然な動作はオブジェクトの作成と操作です。XMLGregorianCalendarの順次作成がパフォーマンス/メモリのボトルネックであることを最初に証明してから、最適化を試みる必要があります。一般に、ガベージ コレクションの力を過小評価しないでください :-)

あなたの例を考えると、最初に DataTypeFactory を「キャッシュ」することを検討する必要があります。

DatatypeFactory dtf = DatatypeFactory.newInstance();
dtf.newXMLGregorianCalendar("2011-08-09T21:50:00Z");
于 2011-08-22T15:01:25.667 に答える