Releases: darkjacky/gm_binarytable
v1.09
Support for Color tables. It will now use 5 bytes. 1 for the type and then r g b a. (Instead of thinking it is a table then having 1 table byte then 4 bytes per color.)
I edited the testing script to always produce the same output. I also added colors and a check if the program works correctly. You can't really compare the current script to the older one nor the result.
It took util.TableToJSON an average of 0.11532600
It took util.JSONToTable an average of 0.10075724
It took TableToBinary an average of 0.00530151
It took BinaryToTable an average of 0.00763879
TableToBinary without CRC is 21.75 faster than util.TableToJSON
BinaryToTable without CRC is 13.19 faster than util.JSONToTable
TableToBinary with CRC is 17.16 faster than util.TableToJSON
BinaryToTable with CRC is 10.01 faster than util.JSONToTable
TableToBinary produced an output of 839878 Byte
util.TableToJSON produced an output of 1500001 Byte
v1.08
This one stops copying and uses offsets more allowing us to skip some memory management.
There seems to be a boost in performance.
It took util.TableToJSON an average of 0.08212233
It took util.JSONToTable an average of 0.07073275
It took TableToBinary an average of 0.0039290299999999
It took BinaryToTable an average of 0.00468537
TableToBinary is 20.90 faster than util.TableToJSON
BinaryToTable is 15.10 faster than util.JSONToTable
TableToBinary with CRC is 15.58 faster than util.TableToJSON
BinaryToTable with CRC is 9.66 faster than util.JSONToTable
TableToBinary produced an output of 859878
util.TableToJSON produced an output of 1060264
V1.07
Somehow somewhere something broke and heres a fix. I hope...
We use memmove now as its quicker in specific areas like this one.
It took util.TableToJSON an average of 0.07521336
It took util.JSONToTable an average of 0.0612218
It took TableToBinary an average of 0.0037361600000001
It took BinaryToTable an average of 0.00485487
TableToBinary is 20.13 faster than util.TableToJSON
BinaryToTable is 12.61 faster than util.JSONToTable
TableToBinary with CRC is 12.98 faster than util.TableToJSON
BinaryToTable with CRC is 8.41 faster than util.JSONToTable
TableToBinary produced an output of 859878
util.TableToJSON produced an output of 1059828
V1.05: Pretty huge bump in performance
How did it get even quicker Less variables less copying. T functions will compile multiple times for each variable that gets pushed. Abuse this to create functions with less variables. 32bit: TableToBinary is 20.33 faster than util.TableToJSON BinaryToTable is 8.12 faster than util.JSONToTable
V1.04: Release 64 bit
Essentially nothing changed. Though size_t is not compatible with unsigned int in x64.
v1.03: Add second arg
Added TableToBinary(tab, true). The true will cause TableToBinary to read as sequential table even if it is not. Passing true will result in a smaller return string as it will not write index keys to file. It will also increase the speed on average to 23x compared to util.TableToJSON. There is no guarantee the table will be correct however. Any non sequential input in it will cause it to count wrong. It also assumes every sub table is sequential as well. This change will not affect BinaryToTable.
V1.02: Slight performance improvement
Improve performance slightly ~13x on both read and write when compared to JSON Reusing a char array increases performance drastically however the overall speed only increases slightly.
v1.01 removal of stringstream
remove requirement of stringstream This seems to have increased the speed drastically Transforming a table with 100000 x { 1, 256, 65536, math.Rand(0, 1), VectorRand(), AngleRand(), "checking checking" } 0.1172683 TableToBinary 1.4816783 util.TableToJSON 0.1305416 BinaryToTable 0.7409233 util.JSONToTable
V1.0 Initial release
Commit