You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A Roblox engineer working on an internal project recently reported a pretty bad performance regression for rojo build for version 6.0 vs 0.5.4 on macOS:
0.5.4:
real 0m0.071s
user 0m0.035s
sys 0m0.030s
6.0.0-rc.1
real 0m3.923s
user 0m0.852s
sys 0m2.858s
This is a 55x performance regression, which is incredibly bad. On my Windows machine with the same project, I had these performance numbers:
0.5.4:
real 0m0.134s
user 0m0.000s
sys 0m0.015s
6.0.0-rc.1:
real 0m0.377s
user 0m0.000s
sys 0m0.015s
0.5.4 is around twice as slow on my machine, but 6.0.0-rc.1 is around ten times faster on my machine.
After bisecting and probing the code a little bit, I narrowed this issue down to #297. Two specific issues I believe we regressed on:
rojo build now watches all files, instead of only happening when running rojo serve. We can introduce this as a configurable feature of the VFS again.
Removal of the file cache means that fs::metadata is invoked several times for each path. While repeated reads are not a factor for performance when building, it may be a good idea to cache more.
I tested this mitigations in the sketchy-perf-changes branch by removing file watching completely and implementing a permanent metadata cache. Both of these changes break serve, but I was able to print 6.0.0-rc.1 in line with the performance numbers for 0.5.4 on my machine.
When running the patched binary on the original reporter's machine, however, performance is around 2x worse than 0.5.4 still:
real 0m0.165s
user 0m0.050s
sys 0m0.059s
This warrants some serious digging I think.
The text was updated successfully, but these errors were encountered:
A Roblox engineer working on an internal project recently reported a pretty bad performance regression for
rojo build
for version 6.0 vs 0.5.4 on macOS:0.5.4:
6.0.0-rc.1
This is a 55x performance regression, which is incredibly bad. On my Windows machine with the same project, I had these performance numbers:
0.5.4:
6.0.0-rc.1:
0.5.4 is around twice as slow on my machine, but 6.0.0-rc.1 is around ten times faster on my machine.
After bisecting and probing the code a little bit, I narrowed this issue down to #297. Two specific issues I believe we regressed on:
rojo build
now watches all files, instead of only happening when runningrojo serve
. We can introduce this as a configurable feature of the VFS again.fs::metadata
is invoked several times for each path. While repeated reads are not a factor for performance when building, it may be a good idea to cache more.I tested this mitigations in the
sketchy-perf-changes
branch by removing file watching completely and implementing a permanent metadata cache. Both of these changes break serve, but I was able to print 6.0.0-rc.1 in line with the performance numbers for 0.5.4 on my machine.When running the patched binary on the original reporter's machine, however, performance is around 2x worse than 0.5.4 still:
This warrants some serious digging I think.
The text was updated successfully, but these errors were encountered: