-
Notifications
You must be signed in to change notification settings - Fork 23
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
A possible optimization for Java (and others) #16
Comments
Why not use the same technique which is used in the Go version, i.e. just calculate a good enough random number |
As I said this can apply to all languages. |
I was talking about this: https://github.com/kid0m4n/rays/blob/master/gorays/main.go#L57-L66 |
Sorry I misinterpreted what you said. That function is like a simple hash function. If it is good enough for ray tracing I guess it is fine. But a sequence still would be faster. |
Faster sure. But we gotta strike a balance. Precomputing value would a stretch IMHO. |
In the Java code there are a lot of ThreadLocalRandom.current().nextFloat() calls. Random float number generation is quite slow in general. If this is used a lot in the loops it may create a bottleneck.
So Instead, creating a large global random number array beforehand and use the values afterwards would be faster. According to my not-so-reliable test it is around 7-8 times faster than ThreadLocalRandom nextFloat(). Below is an example class for this. Probably using this one instance per thread is a good idea. This can apply to all languages.
Of course this is not exactly random so it may not work at all. But it still may worth a shot when look-up is large enough (hundreds of thousands?).
something like
The text was updated successfully, but these errors were encountered: