A deep dive into how a seemingly cosmetic C code style change — using *lwr++ = x instead of *lwr = x; lwr++ — causes Clang to generate branchless csel instructions on ARM (and cmov on x86), resulting in a 6x speedup for a custom Quicksort implementation. The post shows the full branchless Quicksort with sorting networks, compares the generated assembly with and without branches, and notes that GCC does not exhibit this behavior, consistently generating the slower branch-based version.
Nguồn: https://tiki.li/blog/lucky_code.html. 8 Sync News chỉ tóm tắt và dẫn link; bản quyền nội dung thuộc tác giả và nguồn gốc.
Đang tải bình luận…
OPcache trong PHP thường được gọi là cache nhưng thực tế nó không chỉ lưu trữ bytecode mà còn thực hiện chuỗi tối ưu hoá. Khi PHP biên dịch script, OPcache chèn mười lăm bước xử lý (passes) giữa trình biên dịch và trình thực thi để xây dựng lại bytecode. Những bước này bao gồm việc loại bỏ mã không dùng, gộp hằng số, tối ưu hoá vòng lặp và tái cấu trúc cây cú pháp. Nghiên cứu đo lường cho thấy chỉ một phần nhỏ bytecode sau các passes này còn sống sót vào thời gian chạy, phần lớn được thay đổi hoặc loại bỏ. Bài học là để hiểu hiệu suất PHP thực sự cần quan tâm đến các pass tối ưu hoá của OPcache chứ không chỉ dựa vào việc cache bytecode.
Để hiểu sâu hơn cách PHP tối ưu hoá bytecode và lợi ích thực tế của OPcache trong triển khai ứng dụng.
Bài viết đề cập đến việc tận dụng các công cụ (tooling) và thư viện chuẩn (standard library) của ngôn ngữ Go nhằm phát triển các hệ thống phần mềm hiệu quả.
Lập trình viên hệ thống nên đọc bài này để khám phá cách tối ưu hóa hiệu suất và tính bảo trì bằng cách tái sử dụng công cụ và thư viện tiêu chuẩn của Go, giúp phát triển ứng dụng nhanh hơn và đáng tin cậy hơn trong môi trường hệ thống phức tạp.
Solod 0.3 là phiên bản mới của ngôn ngữ lập trình Solod, hỗ trợ concurrency, JSON và cải thiện độ an toàn. Solod là tập con nghiêm ngặt của Go, có thể dịch sang C thông thường.
Lập trình viên muốn khám phá cách áp dụng tính đồng thời (concurrency) trong Go mà không cần phụ thuộc vào các tính năng phức tạp của ngôn ngữ, và tìm hiểu về Solod 0.3 – một biến thể của Go có thể biên dịch thành C – để mở rộng kiến thức về an toàn và hiệu suất trong các dự án mở rộng.
Bài viết phân tích cách triển khai các nguyên thủy lập trình song song theo phong cách Go trong C bằng POSIX threads cho dự án Solod (một trình biên dịch Go-to-C). Nó đề cập đến các wrapper cho mutex/cond, atomics, worker pools, channels có/không buffer, và so sánh hiệu năng chi tiết với Go. Kết quả chính: pthread-based concurrency gần tương đương Go (~10% chênh lệch) ở các tác vụ coarse-grained, nhưng chậm hơn 7-23 lần ở các thao tác fine-grained do chi phí đánh thức kernel, so với scheduler userspace của Go.
Bạn nên đọc để hiểu cách chuyển đổi cơ chế đồng thời kiểu Go sang C bằng pthreads, giúp hiểu rõ những trade-off giữa hiệu năng, phức tạp và sự tương thích khi xây dựng các ứng dụng đa luồng trên nền tảng C.
swSIM là trình giả lập SIM card hoàn toàn bằng phần mềm, mã nguồn mở, không cần phần cứng vật lý. Nó kết nối với PC qua PC/SC nhờ swICC reader, tương thích với mọi điện thoại có khe SIM, được xây dựng bằng make/gcc và không phụ thuộc runtime.
Lập trình viên phát triển ứng dụng di động hoặc hệ thống liên quan đến SIM card nên đọc để tìm hiểu cách tạo mô phỏng SIM card hoàn toàn phần mềm, giúp tiết kiệm chi phí phát triển và mở rộng khả năng tương thích với các thiết bị không cần thiết bị vật lý.
C3 là phiên bản kế thừa của C với cú pháp quen thuộc, tương thích ABI hoàn toàn, hỗ trợ optionals, slices, contracts và zero-cost abstractions, nhằm cải thiện tính ergonomic và an toàn.
Một lập trình viên muốn tối ưu hóa hiệu suất và bảo mật trong dự án hiện tại mà vẫn giữ được sự tương thích với C truyền thống nên đọc bài này để khám phá C3 – một giải pháp nâng cấp hiện đại mà vẫn giữ nguyên giao diện lập trình thân thiện và hiệu suất cao.
Thuật toán yy trong thư viện yyjson, thuộc họ Schubfach, chuyển đổi double sang string nhanh hơn nhờ chỉ dùng một phép nhân với lũy thừa 10 đã tính trước, thay vì hai hoặc ba như phiên bản cổ điển. Bài viết phân tích chi tiết bốn giá trị thập phân ứng cử, ba điều kiện tiên quyết, và giải thích trường hợp biên 116 như một hiệu chỉnh cố định.
Những lập trình viên cần tìm hiểu về yyjson và tối ưu hóa chuỗi số thực sẽ tìm thấy trong bài giải pháp hiệu quả hơn nhiều so với các phương pháp truyền thống, đặc biệt khi muốn giảm thiểu số lần nhân và trùng lặp tính toán trong việc chuyển đổi double thành chuỗi.
Việc phân tích toán tử sizeof trong C phức tạp hơn tưởng vì ngoài cú pháp cơ bản còn phải xử lý các trường hợp như compound literals (sizeof(int){0}) hay chuỗi toán tử hậu tố (ví dụ sizeof(T){}.x[0]()). Ngoài ra, sizeof(int)+1 còn bị nhầm lẫn thành biểu thức cộng thay vì kích thước của một cast, gây khó khăn khi kết hợp phân tích cú pháp giữa cast và biểu thức unary.
Lập trình viên nên đọc bài này để hiểu cách tránh lỗi khi xử lý sizeof trong C, đặc biệt khi đối mặt với trường hợp như compound literal, postfix operator hoặc biểu thức phức tạp, để viết code chính xác và tránh các lỗi biên dịch không mong muốn.
Đọc tin ở đây, luyện code, học theo lộ trình và luyện IELTS trên các sản phẩm anh em — tất cả kết nối với nhau trong hệ sinh thái 8 Sync.
Cổng chính của hệ sinh thái: giới thiệu sản phẩm, blog và bảng giá trọn bộ.
Khám pháHọc theo lộ trình rõ từng chặng: video, quiz chấm tự động, certificate và mentor đang làm nghề.
Xem lộ trình1.000+ bài DSA, đề tiếng Việt, chấm tự động 7 ngôn ngữ — nhiều bài FREE, chạy ngay trên trình duyệt.
Luyện miễn phíChấm bốn kỹ năng IELTS bằng AI, phản hồi chi tiết theo rubric.
Dùng thử miễn phíAI IDE 22 MB cho dev Việt.
Tải miễn phíBộ nhớ tổ chức cho AI agent.
Khám pháAI trực Fanpage, tự sàng lọc lead.
Dùng thử