2010-01-20 32 views
6

Bất cứ ai cũng nhớ tên của dự án "mã nguồn mở" đó đã phát triển một số thay thế tốt đẹp cho String trong java?Thay thế hiệu năng cho chuỗi trong Java

Tôi biết có một, chỉ không thể tìm thấy nó trong google và không nhớ tên. (tôi không nói về StringBuilder)

Cảm ơn

Trả lời

7

Bạn đang tìm kiếm ropes?

Dây thừng là sự thay thế hiệu suất cao cho chuỗi. Datastructure, được mô tả chi tiết trong "Ropes: an Alternative to Strings", cung cấp hiệu năng tốt hơn so với cả String và StringBuffer cho các sửa đổi chuỗi phổ biến như prepend, append, delete và insert. Giống như Strings, dây là không thay đổi và do đó rất phù hợp để sử dụng trong lập trình đa luồng.

6

Không thay thế mục đích chung thay thế. Lớp String của Java được triển khai rất tốt cho mục đích sử dụng chung.

Có triển khai tốt hơn đối với trường hợp cụ thể mà sức mạnh giúp bạn trong những hoàn cảnh nhất định:

  • Ropes phép nối giá rẻ của chuỗi lớn kể từ khi họ khai thác một cấu trúc cây chia sẻ. Có thể tốt hơn so với Strings nếu hầu hết thời gian CPU của bạn được dùng để ghép các chuỗi lớn. Dây thừng cũng chứa một số tối ưu hóa tốt đẹp cho các khối lớn các ký tự lặp lại và tương tự. Chúng không đặc biệt hiệu quả cho mục đích sử dụng chung.
  • javolution.text.Text tương tự như khái niệm về Dây, nhưng nhẹ hơn và hỗ trợ phân bổ bộ nhớ tùy chỉnh để sử dụng trong thời gian thực. Nếu bạn đang làm công việc thời gian thực với các chuỗi lớn, điều này có thể phù hợp nhất với bạn.
  • mikera.persistent.Text là cách triển khai văn bản bất biến của riêng tôi. Rất nhanh, tương tự như khái niệm javolution.text.Text nhưng có các mã băm đã được precomputed vì vậy sẽ tốt hơn nếu bạn muốn sử dụng các chuỗi lớn như các hashmap hoặc các khóa hashset. (Tôi cần điều này tại một thời điểm nào đó, do đó tôi đã tự cuộn ...)
  • StringBuilder rất tốt nếu bạn muốn một chuỗi có thể thay đổi mà bạn sẽ thực hiện nhiều thay đổi nhỏ.
  • mảng char [] là đơn giản và khá tốt nếu tất cả những gì bạn muốn là một chuỗi có thể thay đổi chiều dài cố định - đó là hiệu quả nhất bạn có thể thực hiện trên JVM. Đáng xem xét nếu bạn đang cố gắng thực hiện một số thuật toán chuỗi cấp thấp tùy chỉnh. Hầu hết các triển khai chuỗi khác sử dụng phần này dưới mui xe .....
+0

Câu trả lời tốt hơn/đầy đủ hơn câu trả lời được chấp nhận. – javadba

Các vấn đề liên quan