Update float docs (#16695)
This commit is contained in:
parent
05fa7250b0
commit
bb2b4c7e0b
|
@ -92,10 +92,32 @@ specific needs.
|
||||||
|
|
||||||
## Float Support
|
## Float Support
|
||||||
|
|
||||||
Programs support a limited subset of Rust's float operations, though they are
|
Programs support a limited subset of Rust's float operations, if a program
|
||||||
highly discouraged due to the overhead involved. If a program attempts to use a
|
attempts to use a float operation that is not supported, the runtime will report
|
||||||
float operation that is not supported, the runtime will report an unresolved
|
an unresolved symbol error.
|
||||||
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
|
## Static Writable Data
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue