close
Skip to content

Float16Array lookups appear to be much less performant compared to Float32Array lookups #781

Open

Description

@DLoh22

Hi,
I am using your library in hopes to cut down on memory consumption in my application. I have an array of floats with ~15 million entries, and I have found array lookups to be much slower since converting my Float32Array data type into a Float16Array.

I am trying to figure out if I am doing something incorrectly or if a performance hit is expected on lookups of an array of such a large size. Float16.js get() method is taking lots of time on my performance scans.

float_16_arr[i]; // much slower
float_32_arr[i]; // much faster

Thank you!

Activity

  1. zloirock commented on Oct 10, 2022

    @zloirock

    It's logical. So sensitive to performance features like typed array magic is impossible to make so performant only in the userland as performant they can be done in engines internals. If you need them only for performance, it's better to avoid polyfills. However, they are fine for cases when performance is not so critical, you need them for something else like ToFloat16 conversion, backward compatibility, etc.

  2. petamoriken commented on Oct 17, 2022

    @petamoriken
    Owner

    Unfortunately, Float16Array is not as fast in performance. Each time you get or write a value, it is converted by Proxy.

    If you are concerned about performance, it is recommended to keep the data as a Uint16Array and use only getFloat16 and setFloat16 provided by this library.

  3. petamoriken commented on Feb 19, 2023

    @petamoriken
    Owner
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions