Thứ Tư, 27 tháng 11, 2019

Facebook cải tiến công cụ mã nguồn mở Buck, giúp build ứng dụng Android nhanh hơn

Facebook cải tiến công cụ mã nguồn mở Buck, giúp build ứng dụng Android nhanh hơn

Có một giai đoạn nằm trong quá trình phát triển ứng dụng mà có thể là “nhàm chán” đối với các nhà phát triển, đó là quá trình biên dịch. Tại sao lại nhàm chán? Vì các nhà phát triển có thể sẽ phải dành rất nhiều thời gian chỉ để ngồi đợi cho máy tính của họ hoàn thành quá trình này.

Facebook đã từng phát triển một và sử dụng một công cụ giúp biên dịch code nhanh hơn được gọi là Buck. Được phát hành như một công cụ mã nguồn mở vào tháng 4 năm 2013, công cụ này đã hỗ trợ cho rất nhiều nhà phát triển khi hỗ trợ đa ngôn ngữ và nền tảng. Buck được thiết kế để phát triển các mô-đun nhỏ, có thể tái sử dụng mà có thể kết hợp với các source code và các resources khác.

Và sau hơn 4 năm được tung ra, Buck ngày hôm nay đã được cải tiến nhiều hơn nhờ vào những nỗ lực của Facebook và các cộng tác viên trên khắp thế giới. Với phiên bản mới Buck có thể tăng tốc quá trình biên dịch Java code lên rất nhiều lần.

Jonathan Keljo, kỹ sư phần mềm cao cấp của Facebook cho biết rằng nhóm nghiên cứu đang tìm cách để công cụ này có thể được cải tiến nhiều hơn. Ông nói: "Chúng tôi đã quay trở lại để tiếp tục phát triển dự án và đặt câu hỏi về một số giả định cốt lõi về Java (ngôn ngữ lập trình được sử dụng trong việc tạo ra các ứng dụng). Hôm nay chúng tôi đang mở nguồn một tính năng mới có trong Buck, và nó sẽ mang những cải tiến hiệu suất đến cho các nhà phát triển Android."

Tính năng này được gọi là “source-only stub generation".

Trong bài viết của mình Keljo đã đi sâu vào một số nội dung bên trong Java để giải thích các hoạt động cơ bản của tính năng mới. Nó khá phức tạp nhưng điểm mấu chốt mà các nhà phát triển cần biết là họ đã cải tiến để Buck có thể làm việc hiểu quả hơn.

"Build ứng dụng Instagram sẽ chứng minh khả năng của tính năng này," Keljo nói. "Để build ứng dụng, “source-only stub generation” sẽ giảm graph depth xuống 77% và giảm 50% lượng bộ nhớ cache, điều này đẫn đến thời gian build ứng dụng đã giảm xuống khoảng 30%. Chúng tôi mong đợi những cải tiến tiếp theo khi loại bỏ một số tùy chọn không liên quan, và chúng tôi đang cố gắng triển khai tính năng này cho các ứng dụng Android khác của chúng tôi".

“Source-only stub generation” hiện đã được up lên kho lưu trữ GitHub của Buck và Keljo cũng đã chỉ ra các tài liệu hướng dẫn về cách các nhà phát triển có thể tận dụng tính năng mới này trong code của họ với sự trợ giúp của một autofix script.

Keljo cũng mô tả những cải tiến khác cho Buck. Một trong số đó là việc tinh giản số lượng các file được rebuild. Cơ bản là bằng cách phát triển một cách thức mới, họ để phát hiện các classes đã được sử dụng trong build rules và đưa thông tin đó vào các file phụ thuộc, để ID thay đổi chỉ trong các file đó - targeting chúng để rebuild. Kết quả là tính năng này đã giảm bớt số lượng của rebuilt rules trong Buck xuống 35%, giúp build ứng dụng nhanh hơn.

Một tính năng khác được gọi là “rule pipelining”, cũng giúp giảm 10% thời gian build bằng cách giảm các tắc nghẽn (bottlenecks) không cần thiết. Các nhà phát triển muốn sử dụng tình năng này sẽ cần phải bật nó lên trong phiên bản mã nguồn mở của Buck.

“Điểm mấu chốt là các nhà phát triển Android bây giờ đã có thể biên dịch code của họ chỉ trong vài giây chứ không phải phút,” Facebook cho biết.

Bạn quan tâm đến việc tìm hiểu sâu hơn về các cải tiển của Buck có thể đọc thêm tại bài viết này.


Tôi thích viết Blog để chia sẻ trãi nghiệm của chính mình. Tôi làm việc về Digital Marketing (SEO, Google Adwords, Facebook) và hy vọng sẽ có cơ hội hợp tác với bạn trong tương lai. Cùng chia sẻ kinh nghiệm mình có được

0 Post a Comment