Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve native call performance #365

Closed
ikkentim opened this issue Oct 5, 2020 · 5 comments
Closed

Improve native call performance #365

ikkentim opened this issue Oct 5, 2020 · 5 comments
Labels
area-Core Issues related to SampSharp.Core enhancement
Milestone

Comments

@ikkentim
Copy link
Owner

ikkentim commented Oct 5, 2020

No description provided.

@ikkentim ikkentim added enhancement area-Core Issues related to SampSharp.Core labels Oct 5, 2020
@ikkentim
Copy link
Owner Author

ikkentim commented Oct 5, 2020

Initial benchmark results:

commit: 9b449e7
plugin: debug
gamemode: debug
(debugger attached)

The game mode has loaded.
TestMultiple=1956,3518
Number of vehicle models: 1
TestMultiple=1901,7135
TestMultiple=1908,3566
TestMultiple=1903,7579
TestMultiple=1898,6202
TestMultiple=1923,9677
TestMultiple=1897,9971
TestMultiple=1896,8575
TestMultiple=1904,421
TestMultiple=1897,8813
TestMultiple=1900,4625
TestMultiple=1899,4046
TestMultiple=1899,2225
TestMultiple=1893,1123
TestMultiple=1919,9335
TestMultiple=1911,1821
TestMultiple=1898,5811
TestMultiple=1900,1684
TestMultiple=1911,7895
TestMultiple=1913,8752
TestMultiple=1892,9622
TestMultiple=1904,5994
TestMultiple=1914,8199
TestMultiple=1906,7165
TestMultiple=1895,9797
TestMultiple=1925,7679
TestMultiple=1930,8557
TestMultiple=1912,02
TestMultiple=1906,906
TestMultiple=1927,8213
TestMultiple=1898,5842
TestMultiple=1897,4454
TestMultiple=1888,0112

@ikkentim
Copy link
Owner Author

ikkentim commented Oct 5, 2020

Running in production mode of plugin...

commit: 9b449e7
plugin: release
gamemode: debug
(debugger attached)

The game mode has loaded.
TestMultiple=1393,1334
Number of vehicle models: 1
TestMultiple=1308,7346
TestMultiple=1313,9834
TestMultiple=1309,0015
TestMultiple=1313,0314
TestMultiple=1313,4219
TestMultiple=1308,1912
TestMultiple=1310,4582
TestMultiple=1306,049
TestMultiple=1316,5252
TestMultiple=1310,3737
TestMultiple=1307,1762
TestMultiple=1308,9906

@ikkentim
Copy link
Owner Author

ikkentim commented Oct 6, 2020

I should have also build the game mode in release mode ofc...

commit: 9b449e7
plugin: release
gamemode: release

The game mode has loaded.
TestMultiple=846,4038
Number of vehicle models: 1
TestMultiple=801,7599
TestMultiple=798,6629
TestMultiple=802,1842
TestMultiple=799,3425
TestMultiple=797,0053
TestMultiple=803,1119
TestMultiple=796,8435
TestMultiple=798,2489
TestMultiple=800,1217
TestMultiple=807,7098
TestMultiple=785,8048
TestMultiple=790,2624

@ikkentim
Copy link
Owner Author

ikkentim commented Oct 8, 2020

New FastNative approach, this is including a NativeProxy, excluding a call from BaseVehicle

commit: 2b4bc2a
plugin: release
gamemode: release

TestMultiple=63,5217
TestMultiple=45,6878
TestMultiple=45,9773
TestMultiple=45,3761
TestMultiple=45,4521
TestMultiple=45,6498
TestMultiple=45,9084
TestMultiple=45,4344
TestMultiple=45,2467
TestMultiple=45,3679
TestMultiple=45,386
TestMultiple=45,338

@ikkentim
Copy link
Owner Author

image

(averages in blue) over 23 runs, earch run calling GetVehicleParamsEx 400000 times.

The "fast native" approach provides a 93%/94% performance improvement over the "native handle" approach of invoking natives.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-Core Issues related to SampSharp.Core enhancement
Projects
None yet
Development

No branches or pull requests

1 participant