minetest-mods / craftguide

:book: The most comprehensive Crafting Guide on Minetest
Other
43 stars 20 forks source link

Refactors, performance improvements, and fixes #54

Closed p-ouellette closed 5 years ago

p-ouellette commented 5 years ago

Benchmark in dreambuilder:

master:

[craftguide] Getting init_items
[craftguide] Found 1722 init_items (16592 reg_items) in 16.0126 sec
[craftguide] Running benchmark
get_item_usages
  11.6449
  10.9920
  13.0139
  16.5721
  12.1848
  11.5292
  12.1791
  16.7743
  10.9867
  11.3969
  10.8906
  12.3318
  16.0794
  11.1595
  11.8558
  avg: 12.6394 ms
get_progressive_items
  21.6717
  18.7699
  22.8427
  23.1046
  29.9226
  17.1253
  17.7711
  26.0294
  24.1830
  32.0850
  17.3702
  17.9929
  26.0571
  22.5991
  30.8307
  avg: 23.2237 ms

PR:

[craftguide] Getting init_items
[craftguide] Found 1722 init_items (16592 reg_items) in 16.2989 sec
[craftguide] Running benchmark
get_item_usages
  0.9279
  0.8491
  0.8352
  1.0106
  1.1313
  1.1292
  1.1588
  1.0636
  0.8733
  1.1002
  1.0572
  1.0998
  1.1199
  1.1237
  0.8954
  avg: 1.0250 ms
get_progressive_items
  7.2115
  12.0551
  8.6089
  7.4014
  8.0327
  19.7317
  8.1721
  7.8774
  28.4355
  19.8928
  6.6494
  6.1713
  6.2526
  6.8371
  6.5223
  avg: 10.6568 ms

There's no significant difference in the performance of get_init_items, get_item_usages("default:stick") is ~92% faster, and get_progressive_items is ~54% faster.

To test, the benchmark commit can be cherry-picked from my master branch. Fuels are cached because get_craft_result is very slow (try commenting out cache_fuel in get_init_items).

Also fixes shapeless icon not showing and the wrong tooltip being shown before that. Sorry it's so big.

kilbith commented 5 years ago

Merged, thanks.

https://github.com/minetest-mods/craftguide/commit/d950c71dbc8ba05abef44f8a553e65e2a7b4157f