CS 7345 Advanced Application Programming
Answered
Task
Overview:
In this lab you will utilize Emscripten to convert a c++ library/application into a web application via WebAssembly (WASM). After conversion, evaluate the performance of native vs js based versions of the library.
Code Requirements:
1. Setup the Emscripten pipeline
a. Install Emscripten compiler frontend (emcc)
b. Configure system variables to allow for compilation of code
c. Verify with hello world project.
2. Identify code base to transpile.
a. A code base that has a significant computational overhead should be chosen
i. This can be a publicly available code base, that doesn’t currently have an emscripten port
ii. This can be a custom library/program you have previously created (algorithms, search, math lib, etc).
3. Test code base compiling with emcc to native executable code.
a. This verifies code base is functional and ensures compiling is possible.
4. Build code base to WebAssembly
a. Save out all file that are produced with this step
b. Use HTML output page to verify execution
i. You can modify this page to make it more user friendly, by improving the UX, but it is not required for this project.
5. Extra Credit: Attempt to improve performance of WASM code, if possible, by modifying native code.
Report Requirements:
1. List process taken to setup the Enscripten development environment
a. This should be a tutorial style writeup, showing screenshots and outputs where applicable
b. Be complete with all steps you took to get environment working
i. What websites, what sys variables (if any) did you set and how, how did you compile, etc.
2. Compare and Contrast execution time between native and wasm based code bases
a. Perform a timing analysis for each code base
i. Your analysis should be performed over multiple executions of the code base
1. Do not compare off a single execution of each code base
ii. Show confidence intervals for execution time at 95% confidence interval and discuss if the results are statistically significant
b. Extra Credit: perform same analysis above on any optimizations performed on code base.
All code should be in the “Code” folder, raw data files generated should be in “Data” and your final report should be in “Report” folder in the git repo.