Skip to content

Commit bf9d3b8

Browse files
authored
Merge pull request #1082 from bloomberg/fast_string
fast string
2 parents fec8807 + 8588c2e commit bf9d3b8

30 files changed

+3917
-3401
lines changed

jscomp/.ocamlinit

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,22 @@
22
#require "compiler-libs.common";;
33
#load "bs_hash.cma";;
44
#load "ext.cma";;
5-
#directory "./ext";;
5+
#directory "./ext";;
6+
#directory "./stubs";;
7+
8+
let bench ?(times=10_000_000) f =
9+
let start = Sys.time () in
10+
for i = 0 to times - 1 do
11+
ignore @@ f ()
12+
done;
13+
Printf.printf " -- %f elapsed \n" (Sys.time () -. start )
14+
15+
let a = "xxx"
16+
let b = "yyy"
17+
let () =
18+
bench (fun _ -> String.compare a "yyy"
19+
20+
);
21+
bench (fun _ ->
22+
Bs_hash_stubs.string_length_based_compare a "yyy"
23+
)

jscomp/Makefile

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ ext/hashtbl_make.ml: ext/hashtbl.cppo.ml
9393
cppo -D TYPE_FUNCTOR $< -o $@
9494
## Stubs
9595
.c.o:
96-
$(NATIVE) -ccopt -o -ccopt $@ -c $<
96+
$(NATIVE) -ccopt -O2 -ccopt -o -ccopt $@ -c $<
9797

9898
STUBS_OBJS=stubs/ext_basic_hash_stubs.o
9999

@@ -138,6 +138,7 @@ OUNIT_TESTS_SRCS = ounit_tests_util \
138138
ounit_json_tests ounit_map_tests \
139139
ounit_ordered_hash_set_tests \
140140
ounit_vec_test \
141+
ounit_data_random\
141142
ounit_string_tests\
142143
ounit_topsort_tests\
143144
ounit_sexp_tests\
@@ -271,7 +272,7 @@ bsb.cmxa:$(BSB_CMXS)
271272

272273
check: $(EXT_CMXS) $(COMMON_CMXS) $(SYNTAX_CMXS) $(DEPENDS_CMXS) $(CORE_CMXS) $(BSB_CMXS) $(OTHER_CORE_CMXS) $(MAIN_CMXS) $(OUNIT_CMXS) $(OUNIT_TESTS_CMXS)
273274

274-
bin/bsb.exe: ext.cmxa common.cmxa bsb.cmxa bsb/bsb_main.cmx
275+
bin/bsb.exe: bs_hash.cmxa ext.cmxa common.cmxa bsb.cmxa bsb/bsb_main.cmx
275276
$(NATIVE) -g unix.cmxa str.cmxa $^ -o $@
276277

277278
# bin/bsc: ext.cmxa common.cmxa depends.cmxa syntax.cmxa core.cmxa

jscomp/all.depend

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,8 @@ ext/ordered_hash_map_local_ident.cmx : ext/ordered_hash_map_gen.cmx \
5757
ext/ordered_hash_map_local_ident.cmi
5858
ext/int_map.cmx : ext/map_gen.cmx ext/ext_int.cmx ext/int_map.cmi
5959
ext/literals.cmx : ext/literals.cmi
60-
ext/string_map.cmx : ext/map_gen.cmx ext/string_map.cmi
61-
ext/string_set.cmx : ext/set_gen.cmx ext/string_set.cmi
60+
ext/string_map.cmx : ext/map_gen.cmx ext/ext_string.cmx ext/string_map.cmi
61+
ext/string_set.cmx : ext/set_gen.cmx ext/ext_string.cmx ext/string_set.cmi
6262
ext/set_int.cmx : ext/set_gen.cmx ext/ext_int.cmx ext/set_int.cmi
6363
ext/set_poly.cmx : ext/set_gen.cmx ext/set_poly.cmi
6464
ext/ext_scc.cmx : ext/int_vec_vec.cmx ext/int_vec.cmx ext/ext_scc.cmi
@@ -543,8 +543,9 @@ core/lam_compile_group.cmx : core/lam_util.cmx core/lam_stats_export.cmx \
543543
core/js_pass_flatten.cmx core/js_pass_debug.cmx core/js_output.cmx \
544544
core/js_fold_basic.cmx core/js_exp_make.cmx core/js_dump.cmx \
545545
common/js_config.cmx core/js_cmj_format.cmx core/j.cmx ext/ident_set.cmx \
546-
ext/ext_pervasives.cmx common/ext_log.cmx ext/ext_list.cmx \
547-
ext/ext_ident.cmx ext/ext_filename.cmx core/lam_compile_group.cmi
546+
ext/ext_string.cmx ext/ext_pervasives.cmx common/ext_log.cmx \
547+
ext/ext_list.cmx ext/ext_ident.cmx ext/ext_filename.cmx \
548+
core/lam_compile_group.cmi
548549
core/js_implementation.cmx : core/ocaml_parse.cmx ext/literals.cmx \
549550
core/lam_compile_group.cmx core/lam_compile_env.cmx common/js_config.cmx \
550551
ext/ext_pervasives.cmx common/ext_log.cmx syntax/bs_ast_invariant.cmx \
@@ -590,7 +591,8 @@ ounit_tests/ounit_array_tests.cmx : ounit/oUnit.cmx ext/ext_string.cmx \
590591
ounit_tests/ounit_list_test.cmx : ounit/oUnit.cmx ext/ext_list.cmx
591592
ounit_tests/ounit_bal_tree_tests.cmx : ext/set_poly.cmx ext/set_int.cmx \
592593
ext/set_gen.cmx ounit_tests/ounit_tests_util.cmx ounit/oUnit.cmx
593-
ounit_tests/ounit_path_tests.cmx : ounit/oUnit.cmx ext/ext_filename.cmx
594+
ounit_tests/ounit_path_tests.cmx : ounit/oUnit.cmx ext/ext_string.cmx \
595+
ext/ext_filename.cmx
594596
ounit_tests/ounit_union_find_tests.cmx : ext/union_find.cmx ounit/oUnit.cmx \
595597
ext/int_vec_vec.cmx ext/int_vec.cmx ext/ext_string.cmx
596598
ounit_tests/ounit_hash_stubs_test.cmx : ounit_tests/ounit_tests_util.cmx \
@@ -609,7 +611,9 @@ ounit_tests/ounit_ordered_hash_set_tests.cmx : \
609611
ext/ordered_hash_set_string.cmx ounit/oUnit.cmx ext/ext_util.cmx
610612
ounit_tests/ounit_vec_test.cmx : ext/set_int.cmx ounit/oUnit.cmx \
611613
ext/int_vec.cmx ext/ext_json.cmx
612-
ounit_tests/ounit_string_tests.cmx : ounit/oUnit.cmx ext/ext_string.cmx
614+
ounit_tests/ounit_data_random.cmx :
615+
ounit_tests/ounit_string_tests.cmx : ounit_tests/ounit_data_random.cmx \
616+
ounit/oUnit.cmx ext/ext_string.cmx
613617
ounit_tests/ounit_topsort_tests.cmx : ext/set_int.cmx ounit/oUnit.cmx \
614618
ext/int_vec.cmx ext/ext_topsort.cmx
615619
ounit_tests/ounit_sexp_tests.cmx : ounit/oUnit.cmx ext/ext_sexp.cmx

jscomp/bin/Makefile

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,27 +6,27 @@ ifndef EXE
66
endif
77
NATIVE=ocamlopt.opt$(EXE)
88

9-
OCAMLOPT_FLAGS= -inline 1000 -w -a ../stubs/ext_basic_hash_stubs.c
9+
OCAMLOPT_FLAGS= -g -inline 1000 -w -a ../stubs/ext_basic_hash_stubs.c
1010

1111
bsppx.exe: config_bsppx.mli config_bsppx.ml bsppx.mli bsppx.ml
12-
$(NATIVE) -g -inline 1000 -linkall -w -a $^ -o $@
12+
$(NATIVE) $(OCAMLOPT_FLAGS) $^ -o $@
1313

1414
bspp.exe: bspp.mli bspp.ml
15-
$(NATIVE) -g -inline 1000 -linkall -w -a $^ -o $@
15+
$(NATIVE) $(OCAMLOPT_FLAGS) $^ -o $@
1616

1717
bsdep.exe: config_bsdep.mli config_bsdep.ml bsdep.mli bsdep.ml
18-
$(NATIVE) -g -inline 1000 -linkall -w -a $^ -o $@
18+
$(NATIVE) $(OCAMLOPT_FLAGS) $^ -o $@
1919

2020
bsb.exe: bsb.mli bsb.ml
21-
$(NATIVE) -g -inline 1000 -linkall unix.cmxa str.cmxa -w -a $^ -o $@
21+
$(NATIVE) $(OCAMLOPT_FLAGS) unix.cmxa str.cmxa $^ -o $@
2222

2323
bsb_helper.exe: bsb_helper.mli bsb_helper.ml
24-
$(NATIVE) -g -inline 1000 -linkall unix.cmxa str.cmxa -w -a $^ -o $@
24+
$(NATIVE) $(OCAMLOPT_FLAGS) unix.cmxa str.cmxa -w -a $^ -o $@
2525

2626
config_whole_compiler.ml:config_whole_compiler.mlp ../config.js
2727
node ../config.js
2828
bsc.exe: config_whole_compiler.mli config_whole_compiler.ml whole_compiler.mli whole_compiler.ml
29-
$(NATIVE) -w -a ../stubs/ext_basic_hash_stubs.c $^ -o $@
29+
$(NATIVE) $(OCAMLOPT_FLAGS) $^ -o $@
3030

3131
bspack.exe: config_bspack.mli config_bspack.ml bspack.mli bspack.ml
3232
$(NATIVE) $(OCAMLOPT_FLAGS) unix.cmxa $^ -o $@

jscomp/bin/all_ounit_tests.d

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ bin/all_ounit_tests.ml : ounit_tests/ounit_scc_tests.ml
8686
bin/all_ounit_tests.ml : ext/ext_sexp.ml
8787
bin/all_ounit_tests.ml : ext/ext_sexp.mli
8888
bin/all_ounit_tests.ml : ounit_tests/ounit_sexp_tests.ml
89+
bin/all_ounit_tests.ml : ounit_tests/ounit_data_random.ml
8990
bin/all_ounit_tests.ml : ounit_tests/ounit_string_tests.ml
9091
bin/all_ounit_tests.ml : ext/ext_topsort.ml
9192
bin/all_ounit_tests.ml : ext/ext_topsort.mli

0 commit comments

Comments
 (0)