Tôi có ứng dụng máy chủ java tải xuống tệp CSV và phân tích cú pháp đó. Việc phân tích cú pháp có thể mất từ 5 đến 45 phút, và xảy ra mỗi giờ. Phương pháp này là một nút cổ chai của ứng dụng vì vậy nó không phải là tối ưu hóa sớm. Mã cho đến thời điểm này:Phân tích cú pháp CSV nhanh
client.executeMethod(method);
InputStream in = method.getResponseBodyAsStream(); // this is http stream
String line;
String[] record;
reader = new BufferedReader(new InputStreamReader(in), 65536);
try {
// read the header line
line = reader.readLine();
// some code
while ((line = reader.readLine()) != null) {
// more code
line = line.replaceAll("\"\"", "\"NULL\"");
// Now remove all of the quotes
line = line.replaceAll("\"", "");
if (!line.startsWith("ERROR"){
//bla bla
continue;
}
record = line.split(",");
//more error handling
// build the object and put it in HashMap
}
//exceptions handling, closing connection and reader
Có thư viện nào có thể giúp tôi tăng tốc không? Tôi có thể cải thiện mã hiện tại không?
Tệp lớn như thế nào? Và bạn đã thử định dạng mã của mình chưa? Điều này sẽ cung cấp cho bạn nút cổ chai của bạn và một ý tưởng rõ ràng nơi để cải thiện. Tôi sẽ không ngạc nhiên nếu mạng của bạn là vấn đề chính. Ngoài ra, hãy xem http://commons.apache.org/sandbox/csv/ thay vì tự mình xây dựng trình phân tích cú pháp. – joostschouten
Tôi đang lập hồ sơ ngay bây giờ và tôi biết rằng phần lớn thời gian là do kết nối mạng. Tôi muốn cải thiện phân tích cú pháp trước hết bởi vì với mạng tôi cần thay đổi kiến trúc. (Ước tính của tôi là phân tích cú pháp nhanh hơn có thể cải thiện thời gian tải lên 10-15%). –
Nghe có vẻ công bằng. Do sử dụng một bộ phân tích cú pháp csv vì chúng được tối ưu hóa và bạn đang bị ràng buộc để chạy vào thoát và i18n vấn đề xuống con đường mà bạn không muốn lo lắng về. Chúc may mắn. – joostschouten