Code makes the world a better place

使用 Emscripten 將 Pthread 轉成 JavaScript 與效能分析

簡介

Emscripten 是可以將 C/C++ 轉換成 WebAssembly 的工具,背後是透過 LLVM 轉換,支援轉換 Pthread,會轉成 JavaScript 的 Web Worker 加 WebAssembly,甚至可以將 OpenGL 轉成 WebGL,讓程式在網頁上跑還能有接近原生程式的效能。

其中 Pthread 轉成 Web Worker 加 WebAssembly 的部分,就是本文要介紹的重點。我會拿一個範例程式來實際轉換看看,不過要找一個好的測試程式不容易,所以我寫一支 Pthread 計算 PI 的平行程式,用來做轉換測試。

本文先介紹如何使用 Emscripten 將 Pthread 轉 JS,照著官網教學做的過程採到一些坑,順便也記錄下來,免得大家又落坑了。隨後會分析 (1)原生 C Code (2)Emscripten 轉換的 JS (3)直接用 JS 寫的 Web Worker,三種情境下的效能差異。

Continue reading

How the Puffin Browser Works

Puffin is wicked fast. Let’s dig deeper into it.


This summer, I have been a software engineering intern at CloudMosa, Inc., a company which develops Puffin Browser.

During two months of the summer, I have participated in some features development and fixed some bugs. Meanwhile, I have a look at the whole picture of Puffin Browser.

Continue reading

你的第一份大型開源專案--Servo 瀏覽器


Your First Big OSS Project: Servo Browser

前言

開放原始碼軟體,又稱開源軟體(Open Source Software),顧名思義是將軟體的原始碼公開。詳細介紹可以看維基百科介紹以及什麼是開源一文。

身為軟體開發者,我們常常會需要很多工具來幫助我們更簡單完成工作,而且我們都知道沒事不要自己造輪子,這時候就會看看網路上有沒有現成的工具。例如想要開發機器學習可能就會用 Tensorflow,想要開發網頁前端可能會使用 Angular,想要開發 Android App 可能會用 Kotlin,平常用的 gcc 或 clang,甚至 Linux 作業系統通通都是開源軟體。

Continue reading