Update float docs (#16695)

This commit is contained in:
Jack May 2021-04-20 17:28:30 -07:00 committed by GitHub
parent 05fa7250b0
commit bb2b4c7e0b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 26 additions and 4 deletions

View File

@ -92,10 +92,32 @@ specific needs.
## Float Support
Programs support a limited subset of Rust's float operations, though they are
highly discouraged due to the overhead involved. If a program attempts to use a
float operation that is not supported, the runtime will report an unresolved
symbol error.
Programs support a limited subset of Rust's float operations, if a program
attempts to use a float operation that is not supported, the runtime will report
an unresolved symbol error.
Float operations are performed via software libraries, specifically LLVM's float
builtins. Due to be software emulated they consume more compute units than
integer operations. In general, fixed point operations are recommended where
possible.
The Solana Program Library math tests will report the performance of some math
operations:
https://github.com/solana-labs/solana-program-library/tree/master/libraries/math
To run the test, sync the repo, and run:
`$ cargo test-bpf -- --nocapture --test-threads=1`
Recent results show the float operations take more instructions compared to
integers equivalents. Fixed point implementations may vary but will also be
less then the float equivalents:
```
u64 f32
Multipy 8 176
Divide 9 219
```
## Static Writable Data