• About
  • Advertise
  • Privacy & Policy
  • Contact
NQ NEWS
  • Kiến thức tổng hợp
    • Development
    • Deep Learning
    • Cloud Computing
    • Kiến thức bảo mật
    • Tin học văn phòng
  • Thủ thuật
    • Phần Mềm
    • Sửa lỗi máy tính
    • Bảo mật máy tính
    • Tăng tốc máy tính
    • Thủ thuật Wifi
  • Quản trị hệ thống
    • Giải pháp bảo mật
    • Mail Server
    • Mạng LAN – WAN
    • Máy chủ
    • Windows Server 2012
  • Tin tức
No Result
View All Result
  • Kiến thức tổng hợp
    • Development
    • Deep Learning
    • Cloud Computing
    • Kiến thức bảo mật
    • Tin học văn phòng
  • Thủ thuật
    • Phần Mềm
    • Sửa lỗi máy tính
    • Bảo mật máy tính
    • Tăng tốc máy tính
    • Thủ thuật Wifi
  • Quản trị hệ thống
    • Giải pháp bảo mật
    • Mail Server
    • Mạng LAN – WAN
    • Máy chủ
    • Windows Server 2012
  • Tin tức
No Result
View All Result
NQ NEWS
No Result
View All Result
Home Kiến thức tổng hợp Development

Tổng quan về V8 Engine

@admiz by @admiz
05/05/2021
in Development
0
Tổng Quan Về V8 Engine 60902ec2049e0.jpeg

1. Pipeline

Kiến trúc của V8 được thay đổi theo thời gian. Trong những phiên bản cũ, thiết kế khá phức tạp và khó để mở rộng nhưng gần đây đội ngũ phát triển quyết định thay đổi hướng tiếp cận để V8 trở nên tổng quát hơn từ đó có thể thêm vào những component như ES6, ES7 và những chức năng khác một cách linh động.

Chi tiết về biểu đồ phát triển của V8 có thể xem chi tiết thông qua slides và video.

Ngày nay, V8’s Pipeline có cấu trúc như hình bên dưới:

Ảnh 1.

Tại sao chúng ta lại có 2 giai đoạn: Interpreter Ignition và Compiler TurboFan, lý do là vì chúng ta cần sự cân bằng giữa thời gian khởi tạo, bộ nhớ và tốc độ bởi vì V8 không chỉ thiết kế cho trình duyệt mà còn được sử dụng cho di động và node. Vì vậy, mà đôi lúc chúng ta cần ít bộ nhớ ( cho di động chẳng hạn).

Bạn có thể xem hình dưới đây, bạn vẽ một đường thẳng vuông góc, điểm cắt ngang là những gì bạn đạt được cho Engine. Từ đó, có thể hiểu là không thể nào đạt được tốt hết cho mọi trường hợp.

2. Ignition

Tại sao chúng ta lại cần Ignition, để hiểu rõ lý do chúng ta cần phải lội ngược thời gian khi những phiên bản cũ của V8 hay những trình duyệt Engine khác sử dụng JIT để biên dịch ra Native code ngay trước khi đoạn lệnh đó được thực thi. Đoạn code đó được biên dịch thông qua JIT tiêu hao một lượng bộ nhớ tương đối mặc dù nó chỉ được thực hiện một lần duy nhất.

Sử dụng Ignition, V8 biên dịch code thành byte code cái mà chi phí lưu trữ của nó chỉ từ 25% -> 50% so với cách ở trên. Vậy là chúng ta phải biên dịch lại ra mã máy cho mỗi đoạn code?

Thật ra thì Ignition được sinh ra sau TurboFan vì vậy nó tận dụng được sức mạnh của TurboFan và những tiến trình ở trong nó. Trong trường hợp này, mã bytecode từ Ignition có thể đưa vào TurboFan và xử lý bình thường mà không cần phải biên dịch lại ban đầu từ code. Theo như V8 thì tốc độ thực thi từ mã byte code và cùng một đoạn code đó với mã máy thì hai cái là gần như như nhau.

invoke function –> Ignition –> bytecode –> TurboFan (compile part) –> machine code

3. TurboFan

Khi một đoạn code được gọi, nó được chuyển từ “cold” sang “warm” và nó được chuyển sang “hot” khi được thực thi nhiều lần (số lần để sang “hot” phụ thuộc vào engine). Khi đoạn code là “hot”, TurboFan lúc này mới tìm cách để tối ưu hoá thông qua dữ liệu nó thu thập được từ những lần chạy trước (một trong những cách là đoán kiểu dữ liệu).

Ảnh 3.

Ghi chú: Trước đây, V8 sử dụng Code Objects để lưu trữ cách thức truy cập thuộc tính nhưng nó ảnh hưởng tốc độ tải trang (chiếm bộ nhớ). Khi Ignition được giới thiệu, V8 tổng quát hoá TurboFan dựa trên đó xây dựng nên kiến trúc thực thi code, chúng ta có thể nó sử dụng nó cho Inline Cache. Thông qua đó sẽ giảm thời lượng tải trang và những Code Objects nhỏ. Cơ bản, thông tin về cách lưu trữ và tải được mã hoá thông qua một cấu trúc dữ liệu (FeedbackVector), vì vậy TurboFan thực thi tốt hơn dựa trên thông tin đó.

Hình dưới đây là TurboFan’s Pipeline. Như đã giới thiệu ở trên, Bytecode từ Ignition (Interpreter Assembler) có thể đưa vào luồng xử lý của TurboFan để biên dịch ra mã máy.

Ảnh 4.

>> Tham khảo thêm: Sử dụng NGINX như một Load Balancer

Post Views: 420
Previous Post

Sử dụng NGINX như một Load Balancer

Next Post

Làm quen với MithrilJS – Phần 2

Related Posts

5 Bước Cài đặt Lemp Stack Trên Ubuntu 16.04 60902eddebb15.png
Development

5 bước cài đặt LEMP stack trên Ubuntu 16.04

05/05/2021
Tăng Tốc độ Làm Việc Trên Ubuntu Qua Command đặc Biệt 60902eda2d54e.png
Development

Tăng tốc độ làm việc trên Ubuntu qua command đặc biệt

05/05/2021
Quản Lý Các User Trong Ubuntu Server (p1) 60902ed56b2cc.png
Development

Quản lý các User trong Ubuntu Server (P1)

05/05/2021
Tìm Hiểu Quy Trình Tc39 60902ecd58440.jpeg
Development

Tìm hiểu quy trình TC39

21/04/2022
Làm Quen Với Mithriljs – Phần 1 60902ec9a4f01.jpeg
Development

Làm quen với MithrilJS – Phần 1

21/04/2022
Làm Quen Với Mithriljs – Phần 2 60902ec600017.jpeg
Development

Làm quen với MithrilJS – Phần 2

21/04/2022
Next Post
Làm Quen Với Mithriljs – Phần 2 60902ec600017.jpeg

Làm quen với MithrilJS - Phần 2

Bài mới nhất

Dịch Vụ Thiết Kế Website Tại Hải Dương Chuyên Nghiệp, ấn Tượng Và Uy Tín 612d25752b14f.png

Dịch vụ thiết kế website tại Hải Dương chuyên nghiệp, ấn tượng và uy tín

06/05/2025
Top Công Ty Thiết Kế Website Tại Biên Hòa Chuyên Nghiệp, Chuẩn Seo 612d259494e93.jpeg

Top công ty thiết kế website tại Biên Hòa chuyên nghiệp, chuẩn SEO

06/05/2025
Top Công Ty Thiết Kế Website Tại Vinh – Nghệ An Uy Tín 612d259a9cae3.jpeg

Top công ty thiết kế website tại Vinh – Nghệ An uy tín

05/05/2025
Top 10 Công Ty Thiết Kế Website Tại Nha Trang Chuyên Nghiệp 612d0a9ad018b.jpeg

Top 10 công ty thiết kế website tại Nha Trang chuyên nghiệp

05/05/2025
Các Dịch Vụ Thiết Kế Website Tại Vĩnh Phúc Chuyên Nghiệp, Uy Tín Nhất 612d0a91e63af.jpeg

Các dịch vụ thiết kế website tại Vĩnh Phúc chuyên nghiệp, uy tín nhất

04/05/2025

Danh mục

  • Android
  • Bảo mật máy tính
  • Bảo mật, Antivirus
  • Chuyện công nghệ
  • Deep Learning
  • Development
  • Dịch vụ công trực tuyến
  • Dịch vụ nhà mạng
  • Giải pháp bảo mật
  • Hệ thống
  • Hệ thống
  • iPhone
  • Kiến thức bảo mật
  • Kiến thức cơ bản phổ thông
  • Kiến thức Marketing căn bản
  • Kiến thức tổng hợp
  • Lập trình
  • Linux
  • Linux OS
  • macOS
  • Mail Server
  • Mạng LAN – WAN
  • Máy ảo
  • Máy chủ
  • ms excel
  • ms-powerpoint
  • Nền tảng điện toán đám mây
  • Phần cứng
  • Phần Mềm
  • Quản trị hệ thống
  • Raspberry Pi
  • Sửa lỗi máy tính
  • Tăng tốc máy tính
  • Thủ thuật
  • Thủ thuật SEO
  • Thủ thuật Wifi
  • Tiện ích hệ thống
  • Tin học văn phòng
  • Tin tức
  • Uncategorized
  • Ứng dụng
  • Website
  • Windows Server 2012

Thẻ

#app #chatbot #chatbot tự động #CRM #Kiến thức cơ bản #Techblog #Thiết kế website Android apple CPU Email Marketing Google Google Drive hacker HTML hàm python hàm python có sẵn hình nền hình nền máy tính học css học python học SQL ios iphone iphone 12 iPhone X macos Microsoft mssql MS SQL Server ngôn ngữ lập trình python Raspberry Pi Samsung smartphone SQL SQL Server tham số trong C thủ thuật windows 10 tài liệu python windows windows 10 YouTube điện thoại thông minh ứng dụng
  • About
  • Advertise
  • Privacy & Policy
  • Contact

© 2022 Pha Le Solution

No Result
View All Result
  • Home

© 2022 Pha Le Solution