Đăng nhập vào Hiệu ứng JSON trên Hiệu suất


22

Tôi thấy ngày càng có nhiều bài viết về việc đăng nhập JSON. Bạn cũng có thể tìm thấy một trên blog NodeJS. Tại sao mọi người thích nó rất nhiều? Tôi chỉ có thể thấy nhiều hoạt động hơn tham gia:

  • Một vài đối tượng mới được tạo ra.
  • Sắp xếp các đối tượng, bao gồm việc tính toán độ dài chuỗi hoặc phân bổ nhiều chuỗi.
  • GCing tất cả các crap đã được tạo ra.

Có thử nghiệm nào về hiệu năng khi sử dụng ghi nhật ký JSON và ghi nhật ký chuỗi thông thường không? Mọi người có sử dụng JSON (để ghi nhật ký) trong các dự án doanh nghiệp không?

Câu trả lời:


36

Ghi nhật ký JSON cung cấp cho bạn khả năng phân tích tệp nhật ký theo chương trình ngay cả khi định dạng đã thay đổi theo thời gian .

Một ví dụ điển hình là nhật ký Apache. Theo mặc định, Apache sử dụng commonđịnh dạng cho access.log:

"%h %l %u %t \"%r\" %>s %b"

Giả sử bạn đã xây dựng một trình phân tích cú pháp ngoại tuyến, lấy một trong các tệp nhật ký đó và tính toán một số thống kê từ nó.

Tại một số thời điểm, bạn giới thiệu tên miền phụ cho ứng dụng của mình và bao gồm virtual_hostvào nhật ký của bạn (để bạn có thể gỡ lỗi nếu có vấn đề xuất hiện với một trong các tên miền phụ):

"%v %h %l %u %t \"%r\" %>s %b"

Trình phân tích cú pháp của bạn không sử dụng virtual_hosts, nhưng bạn vẫn cần điều chỉnh trình phân tích cú pháp của mình để:

  • chấp nhận định dạng nhật ký mới (chú ý %vở đầu định dạng nhật ký)
  • vẫn hỗ trợ định dạng nhật ký cũ (đối với các tệp nhật ký cũ hơn)

Nhưng nếu bạn đăng nhập JSON , trình phân tích cú pháp của bạn thậm chí sẽ không nhận thấy trường được thêm vào và có thể vui vẻ phân tích các bản ghi mới cũng như các bản ghi cũ. Và một số trình phân tích cú pháp khác có thể sử dụng các trường được thêm vào nếu chúng tồn tại .

Và tất nhiên đối với bạn , phân tích cú pháp JSON dễ hơn viết regexpsđể phân tích các bản ghi chuỗi.


10
Ví dụ hoàn hảo.
Florian Margaine

27

Nếu máy của bạn chạy quá gần giới hạn của nó đến mức những vấn đề như vậy thực sự có vấn đề, rất có thể bạn sẽ gặp vấn đề nghiêm trọng hơn. Mặc dù có thể có những tình huống đặc biệt khi điều này tạo ra sự khác biệt, nhiều ứng dụng (có thể là hầu hết) chạy trên các máy có sự khác biệt nếu bạn đăng nhập JSON, văn bản đơn giản hoặc bản ghi vào cơ sở dữ liệu hoàn toàn không thành vấn đề. Đối tượng, chuỗi và các chuyển đổi khác phải được thực hiện trong hầu hết các trường hợp (trừ khi bạn đăng nhập nhị phân thô?), Có thể bạn sẽ không thấy nó, bởi vì bạn sử dụng các lớp mặc định xử lý nó trong nền (như nếu bạn ghi vào cơ sở dữ liệu).

Nếu bạn cần đánh giá hiệu năng cho việc này, bạn sẽ cần phải tự thực hiện chúng trên máy bạn muốn chạy mã của mình và với môi trường lập trình bạn sử dụng hàng ngày. Nếu có một chi phí lớn hoặc bất kỳ điều gì phụ thuộc vào nhiều thứ. Ví dụ, nếu bạn viết một trang web bằng Ruby on Rails, thì dữ liệu của bạn trong hầu hết các trường hợp là một hàm băm, chuyển đổi nó thành JSON gần như không có gì, vì biểu diễn bên trong không quá xa so với những gì bạn muốn viết (và đó là điển hình cho mã Rails để ném xung quanh các đối tượng và cấu trúc dữ liệu như vậy mọi lúc).

Những lợi thế phụ thuộc một lần nữa vào các công cụ của bạn. Nếu bạn có JSON được xây dựng trong các thư viện của mình, bạn có thể dễ dàng đọc nó và hiển thị nó ở một số dạng. Một lần nữa là một ví dụ: Giả sử bạn có giao diện quản trị cho trang web của mình và muốn hiển thị một số thông tin đăng nhập được lưu trữ trong JSON, bạn có thể thực hiện việc đọc và hiển thị dưới dạng HTML trong Ruby trong một dòng mã trong một số trường hợp.


1
Tôi cá là bạn không quan tâm nhiều đến việc vứt bỏ micro giây ...
Rhymoid

@Rhymoid không, tôi thích sử dụng thời gian của mình để giải quyết các vấn đề thực sự.
thorsten müller

3
@Rhymoid Có những tình huống mà vứt bỏ micro giây là điều chắc chắn. Tôi cũng nghĩ rằng 99,9% lập trình viên sẽ viết mã ở nơi không có. Ví dụ, hầu hết các khung web làm nhiều hơn tôi cần và điều đó có chi phí hoạt động. Nhưng, đi kèm với nó là một bộ đầy đủ các bài kiểm tra và bảo mật, cộng với nó giúp tôi tiết kiệm hàng trăm giờ để tự mã hóa nó. Để có thêm chi phí, công ty của tôi không bỏ ra để xây dựng nó từ đầu, họ có thể tài trợ gấp đôi phần cứng nếu họ cần (mặc dù nó có thể nhanh hơn bất cứ thứ gì tôi có thể tự xây dựng ...) Cuối cùng, micro giây không thành vấn đề.
corsiKa
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.