Coder Social home page Coder Social logo

markuskuusisto / laz-perf Goto Github PK

View Code? Open in Web Editor NEW

This project forked from hobuinc/laz-perf

0.0 1.0 0.0 4.11 MB

Exploration of ways to increase performance of javascript LASzip code generated by emscripten.

License: GNU Lesser General Public License v2.1

CMake 1.09% C++ 83.33% Shell 8.32% HTML 0.09% Python 4.95% Makefile 1.65% M4 0.46% Objective-C 0.06% C 0.05%

laz-perf's Introduction

Build Status

What is this?

Exploration into compiling LASzip into faster javascript.

Why?

The emscripten output for LASzip to javascript is unusably slow. The generated Javascript code is not going to be a feasible solution to bring LASzip to all browsers. This project will explore and benchmark certain aspects of LASzip decompression and then help decide on next steps.

The plan

The goal is to get a minimum viable experiment to work which will help pick a path for further research and development. For this purpose, decompresison of only point positions will be considered and implemented.

  • Write a native javascript decoder and benchmark it.
  • Templatize and reduce C++ runtime overhead in LASzip. Templates can be used to tight-loop decompression. This tight-looped code can (may be) then generate faster javascript code. Benchmark the experimental C++ and the generated Javascript code.

Benchmark results so far

All tests were run on a 2013 Macbook Pro 2.6 Ghz Intel Core i7 16GB 1600 MHz DD3. Arithmetic encoder was run on a 4 field struct with two signed and two unsigned fields. Please see the benchmarks/brute.cpp for how these tests were run. The emscriten version used was Emscripten v1.14.0, fastcomp LLVM, JS host: Node v0.10.18

Native:

      Count       Comp Init       Comp Time      Comp Flush     Decomp Init     Decomp Time
       1000        0.000001        0.000279        0.000000        0.000000        0.000297
      10000        0.000000        0.001173        0.000000        0.000000        0.001512
     100000        0.000000        0.009104        0.000000        0.000000        0.011168
    1000000        0.000000        0.082419        0.000000        0.000000        0.108797

Node.js, test runtime JS v0.10.25

      Count       Comp Init       Comp Time      Comp Flush     Decomp Init     Decomp Time
       1000        0.000586        0.014682        0.000273        0.000383        0.008012
      10000        0.000022        0.017960        0.000009        0.000004        0.020219
     100000        0.000030        0.128615        0.000008        0.000004        0.141459
    1000000        0.000010        1.245053        0.000009        0.000005        1.396419

Firefox, v28.0

      Count       Comp Init       Comp Time      Comp Flush     Decomp Init     Decomp Time
       1000        0.000005        0.001311        0.000006        0.000003        0.000820
      10000        0.000003        0.007966        0.000004        0.000001        0.007299
     100000        0.000001        0.062016        0.000003        0.000001        0.064037
    1000000        0.000002        0.662454        0.000009        0.000003        0.673866

Google Chrome, v34.0.1847.116

      Count       Comp Init       Comp Time      Comp Flush     Decomp Init     Decomp Time
       1000        0.000751        0.012357        0.000424        0.000516        0.008413
      10000        0.000016        0.006971        0.000016        0.000004        0.009481
     100000        0.000008        0.059768        0.000009        0.000004        0.070253
    1000000        0.000009        0.576017        0.000019        0.000005        0.658435

laz-perf's People

Contributors

abellgithub avatar connormanning avatar gadomski avatar hobu avatar verma avatar vuakko avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.