Trước đây, khi lần đầu tiên tôi thiết kế phần mềm liên quan đến ứng dụng chứng khoán, tôi quyết định sử dụng java.util.Date
để trình bày thông tin ngày/giờ của một cổ phiếu.Di chuyển từ Lịch Java sang Ngày Joda
Sau đó, tôi nhận thấy hầu hết các phương pháp trong số java.util.Date
không còn được dùng nữa. Do đó, rất sớm, tôi refactor tất cả các mã của tôi để sử dụng java.util.Calendar
Tuy nhiên, có 2 thiếu sót mà tôi gặp phải.
- Construct
java.util.Calendar
là so sánh chậm hơn so vớijava.util.Date
- Trong accessors getCalendar phương pháp
Stock
lớp, tôi cần phải sao chép một bản sao, nhưCalendar
là một lớp học có thể thay đổi
Dưới đây là mã nguồn hiện tại cho Stock.java
Gần đây, tôi khám phá Joda-Time. Tôi làm điểm chuẩn sau đây, bằng cách tạo 1.000.000 java.util.Date
, java.util.Calendar
và org.joda.time.DateTime
. Tôi đã tìm thấy org.joda.time.DateTime
hoạt động tốt hơn java.util.Calendar
, trong quá trình khởi tạo.
Đây là kết quả điểm chuẩn .
Tốc độ khởi tạo này là quan trọng, đặc biệt là nhiều phiên bản Cổ phiếu sẽ được tạo, để biểu thị lịch sử giá dài của một cổ phiếu.
Bạn có nghĩ là cần di chuyển từ Lịch Java sang Thời gian ngày Joda, để đạt được hiệu suất tốc độ ứng dụng không? Có bẫy nào tôi cần chú ý không?
+1 @Yan Cheng: Cũng lưu ý rằng tính bất biến của cấu trúc Joda Thời gian của có thể giúp bạn với hiệu suất kể từ khi bạn có thể đưa ra các tham chiếu đến các đối tượng không thay đổi một cách tự do mà không lo lắng về khả năng của khách hàng đột biến chúng. Ví dụ, khi phương thức 'getCalendar()' của bạn trong 'Stock' nhân bản' Calendar', bạn có thể trả về trực tiếp đối tượng Joda Time. – ColinD