Skip to content

Commit

Permalink
use -O3 and move brotli submodule
Browse files Browse the repository at this point in the history
  • Loading branch information
PavlovIvan committed Feb 12, 2018
1 parent 739a2ae commit 382a189
Show file tree
Hide file tree
Showing 10 changed files with 32 additions and 31 deletions.
3 changes: 0 additions & 3 deletions .gitmodules
@@ -1,6 +1,3 @@
[submodule "src/woff2"]
path = src/woff2
url = https://github.com/google/woff2
[submodule "src/brotli"]
path = src/brotli
url = https://github.com/google/brotli
30 changes: 17 additions & 13 deletions Makefile
@@ -1,28 +1,32 @@
all: woff2 woff2_c

brotli:
make -C src/brotli/ -f ../Makefile.brotli
brotli: brotli_mod
make -C src/woff2/brotli/ -f ../../Makefile.brotli

woff2: brotli
make -C src/woff2/ -f ../Makefile.woff2
npm install

woff2_c: brotli_c
mkdir -p src/woff2/woff2_compress
cd src/woff2/woff2_compress; cmake -DBROTLIDEC_INCLUDE_DIRS=../../brotli/buildfiles/installed/include \
-DBROTLIDEC_LIBRARIES=../../brotli/buildfiles/installed/lib/libbrotlidec.so \
-DBROTLIENC_INCLUDE_DIRS=../../brotli/buildfiles/installed/include \
-DBROTLIENC_LIBRARIES=../../brotli/buildfiles/installed/lib/libbrotlienc.so ..
cd src/woff2/woff2_compress; cmake -DBROTLIDEC_INCLUDE_DIRS=../brotli/buildfiles/installed/include \
-DBROTLIDEC_LIBRARIES=../brotli/buildfiles/installed/lib/libbrotlidec.so \
-DBROTLIENC_INCLUDE_DIRS=../brotli/buildfiles/installed/include \
-DBROTLIENC_LIBRARIES=../brotli/buildfiles/installed/lib/libbrotlienc.so ..
make -C src/woff2/woff2_compress
make fixtures

brotli_c:
mkdir -p src/brotli/buildfiles
cd src/brotli/buildfiles; cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=./installed ..
cd src/brotli/buildfiles; cmake --build . --config Release --target install
brotli_c: brotli_mod
mkdir -p src/woff2/brotli/buildfiles
cd src/woff2/brotli/buildfiles; cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=./installed ..
cd src/woff2/brotli/buildfiles; cmake --build . --config Release --target install

brotli_mod:
cd src/woff2; git submodule init; git submodule update


fixtures:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:src/brotli/buildfiles/installed/lib; src/woff2/woff2_compress/woff2_compress test/fixtures/sample.ttf
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:src/woff2/brotli/buildfiles/installed/lib; src/woff2/woff2_compress/woff2_compress test/fixtures/sample.ttf

lint:
./node_modules/.bin/eslint .
Expand All @@ -42,9 +46,9 @@ files_exist:
[ -e build/woff2/decompress_binding.wasm ]

clean:
make -C src/brotli/ -f ../Makefile.brotli clean
make -C src/woff2/brotli/ -f ../../Makefile.brotli clean
make -C src/woff2/ -f ../Makefile.woff2 clean
rm -rf src/brotli/buildfiles
rm -rf src/woff2/brotli/buildfiles
rm -rf src/woff2/woff2_compress

.PHONY: test
2 changes: 1 addition & 1 deletion build/woff2/compress_binding.js

Large diffs are not rendered by default.

Binary file modified build/woff2/compress_binding.wasm
Binary file not shown.
2 changes: 1 addition & 1 deletion build/woff2/decompress_binding.js

Large diffs are not rendered by default.

Binary file modified build/woff2/decompress_binding.wasm
Binary file not shown.
9 changes: 5 additions & 4 deletions src/Makefile.brotli
@@ -1,25 +1,26 @@
OUT_DIR=../../build/brotli
OUT_DIR=../../../build/brotli
LIBCOMMON=$(OUT_DIR)/libbrotlicommon-static.bc
LIBDEC=$(OUT_DIR)/libbrotlidec-static.bc
LIBENC=$(OUT_DIR)/libbrotlienc-static.bc
SRC_LIBCOMMON=c/common/*.c
SRC_LIBDEC=c/dec/*.c
SRC_LIBENC=c/enc/*.c
INCLUDE=c/include
CFLAGS=-O3

.PHONY: all clean

all: $(LIBCOMMON) $(LIBDEC) $(LIBENC)

$(LIBCOMMON): $(OUT_DIR)
emcc -o $(LIBCOMMON) -I$(INCLUDE) $(SRC_LIBCOMMON)
emcc $(CFLAGS) -o $(LIBCOMMON) -I$(INCLUDE) $(SRC_LIBCOMMON)


$(LIBDEC): $(OUT_DIR)
emcc -o $(LIBDEC) -I$(INCLUDE) $(SRC_LIBDEC)
emcc $(CFLAGS) -o $(LIBDEC) -I$(INCLUDE) $(SRC_LIBDEC)

$(LIBENC): $(OUT_DIR)
emcc -o $(LIBENC) -I$(INCLUDE) $(SRC_LIBENC)
emcc $(CFLAGS) -o $(LIBENC) -I$(INCLUDE) $(SRC_LIBENC)

$(OUT_DIR):
mkdir -p $(OUT_DIR)
Expand Down
4 changes: 2 additions & 2 deletions src/Makefile.woff2
Expand Up @@ -14,9 +14,9 @@ BROTLI_OUT_DIR=../../build/brotli
LIBBROTLICOMMON=$(BROTLI_OUT_DIR)/libbrotlicommon-static.bc
LIBBROTLIDEC=$(BROTLI_OUT_DIR)/libbrotlidec-static.bc
LIBBROTLIENC=$(BROTLI_OUT_DIR)/libbrotlienc-static.bc
BROTLI_INCLUDE=../brotli/c/include
BROTLI_INCLUDE=brotli/c/include

CFLAGS=-std=gnu++11 -s 'ALLOW_MEMORY_GROWTH=1' -s 'EXTRA_EXPORTED_RUNTIME_METHODS=["cwrap"]' -O2
CFLAGS=-std=gnu++11 -s 'ALLOW_MEMORY_GROWTH=1' -s 'EXTRA_EXPORTED_RUNTIME_METHODS=["cwrap"]' -O3
EXPORT_ENC=-s 'EXPORTED_FUNCTIONS=["_main", "_malloc", "_free", "_compress", "_compressed_size"]'
EXPORT_DEC=-s 'EXPORTED_FUNCTIONS=["_main", "_malloc", "_free", "_decompress", "_decompressed_size"]'

Expand Down
1 change: 0 additions & 1 deletion src/brotli
Submodule brotli deleted from da254c
12 changes: 6 additions & 6 deletions test/benchmark.sh
Expand Up @@ -12,23 +12,23 @@ N_TEST=25

function performance_compress() {
echo "RUN COMPRESSION PERFORMANCE TEST $N_TEST ITERATION"
cpp_time=$(exec_time "for i in {1..$N_TEST}; do src/woff2/woff2_compress/woff2_compress test/temporary/fontelico.ttf &> /dev/null; done")
cpp_time=$(exec_time "for i in {1..$N_TEST}; do src/woff2/woff2_compress/woff2_compress test/temporary/sample.ttf &> /dev/null; done")
echo "C++ TIME: $cpp_time sec"
js_time=$(exec_time "for i in {1..$N_TEST}; do node bin/woff2_compress.js test/temporary/fontelico.ttf test/temporary/fontelico_js.woff2 &> /dev/null; done")
js_time=$(exec_time "for i in {1..$N_TEST}; do node bin/woff2_compress.js test/temporary/sample.ttf test/temporary/sample_js.woff2 &> /dev/null; done")
echo "JS TIME: $js_time sec"
}

function performance_decompress() {
echo "RUN DECOMPRESSION PERFORMANCE TEST $N_TEST ITERATION"
cpp_time=$(exec_time "for i in {1..$N_TEST}; do src/woff2/woff2_compress/woff2_decompress test/temporary/fontelico.woff2 &> /dev/null; done")
cpp_time=$(exec_time "for i in {1..$N_TEST}; do src/woff2/woff2_compress/woff2_decompress test/temporary/sample.woff2 &> /dev/null; done")
echo "C++ TIME: $cpp_time sec"
js_time=$(exec_time "for i in {1..$N_TEST}; do node bin/woff2_decompress.js test/temporary/fontelico.woff2 test/temporary/fontelico_js.ttf &> /dev/null; done")
js_time=$(exec_time "for i in {1..$N_TEST}; do node bin/woff2_decompress.js test/temporary/sample.woff2 test/temporary/sample_js.ttf &> /dev/null; done")
echo "JS TIME: $js_time sec"
}

mkdir -p test/temporary
cp test/fixtures/fontelico.ttf test/temporary
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:src/brotli/buildfiles/installed/lib
cp test/fixtures/sample.ttf test/temporary
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:src/woff2/brotli/buildfiles/installed/lib

performance_compress
performance_decompress
Expand Down

0 comments on commit 382a189

Please sign in to comment.