Hiệu suất JavaScriptCore so với V8

Như đã dự đoán vào năm ngoái, một xu hướng đang nổi lên xung quanh việc tạo thời gian chạy JavaScript tùy chỉnh. Lúc đầu, nó chỉ là trình duyệt. Sau đó, có kỳ lân biển. Sau đó, có Nút. js và các thời gian chạy ít được biết đến hơn như Vert. x. Ngày nay, thế giới có Cloudflare Worker, Deno và giờ là Bun. sh

Bun là thời gian chạy JavaScript mới hứa hẹn tốc độ cao hơn thời gian chạy hiện tại. Các điểm chuẩn hiện tại tự hào về những so sánh ấn tượng để phục vụ nội dung web, tương tác với SQLite và hỗ trợ Giao diện chức năng nước ngoài [FFI]

Điểm chuẩn bún

Nút. js, Deno, Cloudflare Worker, Chrome, Edge, Opera và Brave Browser đều dựa trên công cụ JavaScript V8 của Google. Các thời gian chạy này tận dụng các Bản cô lập V8, là một phiên bản duy nhất chưa sửa đổi của công cụ JavaScript V8. Bản thân công cụ diễn giải mã JavaScript, nhưng chức năng bị giới hạn trong đặc tả ECMAScript. Hầu hết các khả năng mà các nhà phát triển quen thuộc thực sự là một phần của các thư viện riêng biệt được tích hợp vào V8 Isolates. Trình duyệt thêm API Web, cung cấp chức năng quen thuộc như bảng điều khiển. đăng nhập. Nút. js thêm libuv, cung cấp quyền truy cập vào hệ thống tệp [fs]. Deno sử dụng Rusty V8 và Tokio, trong khi Cloudflare thêm thư viện bộ nhớ đệm của riêng họ

Mọi người đều thích phần mềm nhanh

Giống như các thời gian chạy JavaScript khác, Bun thêm các API của riêng mình. Không giống như các thời gian chạy khác, nó được xây dựng trên JavaScriptCore thay vì V8. JavaScriptCore được biết là khởi động nhanh hơn một chút so với V8, giúp loại bỏ độ trễ [yếu tố chính trong môi trường không có máy chủ]. Nó cũng được viết bằng Zig, một ngôn ngữ cấp thấp với quản lý bộ nhớ thủ công. Bằng cách xử lý bộ nhớ theo cách thủ công, tác giả có nhiều quyền kiểm soát hơn đối với hiệu suất. Nhóm Bun đã dành rất nhiều thời gian để tối ưu hóa thời gian chạy bằng các công cụ này

Một cái gì đó cho mọi người… gần như

Một tính năng đặc biệt thú vị của Bun là hỗ trợ các mô-đun nút [JS/CJS chung] và Mô-đun ES [nhập khẩu/ESM]. Bằng cách hỗ trợ cả hai phương pháp này, các nhà phát triển Bun có thể sử dụng một hệ sinh thái lớn gồm các thư viện hiện có, bất kể phương pháp phát triển ưa thích của họ là gì. Nút. js cũng hỗ trợ cả hai cách tiếp cận này, nhưng không đồng thời. Deno chỉ hỗ trợ ESM. Về vấn đề này, Bun thúc đẩy cộng đồng JavaScript bằng cách loại bỏ một lựa chọn đau đớn

Cập nhật. Deno hiện hỗ trợ các mô-đun npm

Bun cũng hỗ trợ TypeScript và JSX ngay lập tức. Nó chứa một trình chạy thử gốc [tương tự như Jest]. Nó hỗ trợ khái niệm tệp môi trường [tải. env thành các biến môi trường]. Nó có một giải pháp thay thế cho npm, chạy “nhanh hơn 20 lần” theo trang web Bun. Có rất nhiều tính năng, nhưng nhiều ý kiến

Cá nhân tôi không thích các bài kiểm tra kiểu Jest. Tôi không sử dụng JSX. Tôi không phản đối TypeScript, nhưng nó không phải là một phần công việc hàng ngày của tôi. Bun có vẻ như được điều chỉnh để hoạt động với React phía máy chủ, điều mà tôi không thực sự thấy mình đang làm. Cho dù bạn có chia sẻ ý kiến ​​​​của tôi hay không, Bun vẫn có quan điểm và tôi là bằng chứng cho thấy những ý kiến ​​đó không phổ biến

Một khán giả bị mất

Có một mảnh ghép còn thiếu rất đáng chú ý dành cho Bun. Nó không hỗ trợ Windows

Trái ngược với một số giả định, Windows vẫn chiếm thị phần vượt trội cho cả mục đích sử dụng cá nhân và chuyên nghiệp

Trong những năm qua, macOS và Linux đã giành được thị phần, nhưng việc loại bỏ một hệ điều hành chính sẽ loại bỏ một phần lớn thị trường. Một trong những điểm thu hút chính của JavaScript trong lịch sử là nó đa nền tảng

Bun còn mới và JavaScriptCore đã hỗ trợ trên Windows nên có lẽ một lúc nào đó Bun sẽ hỗ trợ Windows. Tuy nhiên;

Có thể làm cho Bun hoạt động trên Windows, nhưng liệu nó có thể thực hiện được những lời hứa mà nó đưa ra trên Windows không? . Nếu không thể đạt được mức tăng I/O tương tự trên Windows, thì Bun có thể không giữ được lời hứa mà nó đưa ra

Bun vs Node/Deno

Bun tuyên bố là sự thay thế thả xuống cho Node hoặc Deno, nhưng không phải vậy

Thiếu sự hỗ trợ của Windows khiến điều này không hoạt động dưới dạng thay thế thả vào, nhưng có những yếu tố khác. Node và Deno đều có thể tạo ra các tệp thực thi [xem JavaScript Executables]. Deno có thể nhúng. Những khác biệt này sẽ không ảnh hưởng đến tất cả mọi người, nhưng chúng sẽ ảnh hưởng đến nhiều

Theo quan điểm của tác giả này, Bun phù hợp hơn với thời gian chạy như Công nhân Cloudflare. Công nhân là một hệ sinh thái phía máy chủ khép kín, được thiết kế cho một mục đích sử dụng cụ thể. Bun có thể được sử dụng để xây dựng môi trường công nhân JS phía máy chủ nhanh hơn trong đó các trường hợp sử dụng bị hạn chế đối với phát triển web hoặc API

Bun cũng có thể đóng vai trò là công cụ xây dựng cho các nhà phát triển. Hỗ trợ riêng cho hầu hết các thách thức về quy trình phát triển khiến nó trở nên lý tưởng cho việc này trên các hệ điều hành mà Bun hỗ trợ

Có Nên Dùng Bún Không?

Bun mới và có một số tính năng thú vị. Nỗ lực tuyệt đối đã đi vào nó thật đáng ngưỡng mộ. Đó là một ví dụ khác về cách hệ sinh thái JavaScript tiếp tục đẩy nhanh quá trình phát triển của nó. Vì lý do đó thôi, tôi sẽ thử nghiệm với Bun. Sẽ có những trường hợp sử dụng mà nó sẽ là sự lựa chọn tốt nhất. Tuy nhiên;

Nếu bạn đang xây dựng môi trường serverless/worker của riêng mình hoặc nếu bạn làm việc với React rất nhiều, thì Bun có thể thực sự phù hợp

Khi xác định xem Bun có phù hợp với bạn hay không, có thể bạn sẽ muốn xem xét khả năng tồn tại lâu dài của dự án. Các dự án nguồn mở thuộc phạm vi này đang đòi hỏi tài nguyên, thời gian và cuối cùng là tiền bạc. Nút. js có chỗ đứng vững chắc và sự hỗ trợ đáng tin cậy trên thị trường, mất khoảng một thập kỷ để thiết lập. Deno đã huy động được 26 triệu đô la qua hai vòng cấp vốn và hoạt động dưới sự hướng dẫn của nhiều nhà phát triển Node ban đầu [bao gồm cả Ryan Dahl]. Những người này đã học được rất nhiều bài học trong hành trình kéo dài hàng thập kỷ của họ. Cloudflare có $16. Vốn hóa thị trường 8B. Thật tuyệt khi thấy Bun được chấp nhận vào hệ sinh thái JavaScript, nhưng liệu dự án có thể tạo ra đủ hỗ trợ để duy trì khả thi như một nỗ lực nguồn mở trong một thị trường đông đúc không?

Phần kết luận

Tôi ấn tượng bởi những nỗ lực kỹ thuật đã đi vào Bun. Tuy nhiên; . js đã làm, tận dụng rất nhiều ý kiến ​​​​ban đầu có thể không được ủng hộ khá nhanh

Đó là một dự án còn rất mới, vì vậy thực tế là nó được so sánh với những nỗ lực khác này đã là một thành tựu của riêng nó. Cá nhân tôi sẽ thử nghiệm với Bun và để mắt đến các tình huống mà nó phù hợp với sự phát triển của tôi, nhưng tôi không có kế hoạch xây dựng bất cứ điều gì quan trọng với nó cho đến khi những câu hỏi này được trả lời

CẬP NHẬT. tháng 8 năm 2022

Bun vừa công bố một công ty mới, có tên là Oven, với số tiền tài trợ mới là 7 triệu đô la. Nó được hỗ trợ bởi những nghi phạm thông thường, bao gồm cả những người như Guillermo Rauch [Vercel]… người cũng ủng hộ Deno. Tôi chỉ ra điều này bởi vì cả thiên thần và đầu tư mạo hiểm dường như đang nhảy vào đấu trường thời gian chạy JavaScript. Nhiều VC sẽ đầu tư vào một số [hoặc đôi khi là tất cả] đối thủ cạnh tranh trong một ngành, để tăng cơ hội cho một trong số họ trở nên lớn mạnh.

Thế mới nói, kinh phí chắc chắn sẽ giúp tăng tốc độ phát triển cho Bun. Tuy nhiên; . Zakas chỉ ra rằng, Bun chưa làm được điều gì mới hoặc sáng tạo, trong khi Deno đã

Thêm nội dung tại PlainEnglish. io. Đăng ký nhận bản tin hàng tuần miễn phí của chúng tôi. Theo dõi chúng tôi trên Twitter, LinkedIn và Discord

V8 có phải là công cụ JavaScript nhanh nhất không?

Công cụ V8 của Google là nhanh nhất . Và nó chỉ quan trọng với bạn nếu bạn đang phát triển thứ gì đó cần diễn giải Javascript. Xem câu trả lời này trên StackOverflow để biết điểm chuẩn. Lưu câu trả lời này.

V8 có nhanh hơn SpiderMonkey không?

V8 là nhanh nhất , vì nó biên dịch tất cả JS thành mã máy. SpiderMonkey [những gì FF sử dụng] cũng nhanh, nhưng biên dịch thành mã byte trung gian, không phải mã máy. Đó là sự khác biệt chính với V8. CHỈNH SỬA- Các bản phát hành Firefox mới hơn đi kèm với một biến thể mới hơn của SpideMonkey; .

Tại sao công cụ Chrome V8 lại nhanh?

Giống như động cơ ô tô V8 [tám xi-lanh], Chrome V8 nhanh và mạnh mẽ. V8 dịch mã JavaScript trực tiếp thành mã máy* để máy tính thực sự có thể hiểu mã đó, sau đó V8 thực thi mã đã dịch hoặc đã biên dịch . V8 cũng tối ưu hóa việc thực thi JavaScript.

Nền tảng dựa trên JavaScript rất mạnh có được xây dựng trên công cụ JavaScript V8 của Google Chrome không?

Nút. js là một khung/nền tảng dựa trên JavaScript rất mạnh được xây dựng trên Công cụ JavaScript V8 của Google Chrome. Nó được sử dụng để phát triển các ứng dụng web chuyên sâu I/O như trang web phát video, ứng dụng trang đơn và ứng dụng web khác.

Chủ Đề