This repository was archived by the owner on Jan 3, 2023. It is now read-only.
Closed
Conversation
There may be a missing length check on exists, as without hte length check the cost of a comparison and a `call` is incurred.
Adding the simple len > 0 check before the loop appears (in the basic cases I have tested) to near triple performance.
```
let f arr =
Array.exists (fun e -> e = true) arr
for i in 0..60000000 do f ([||]:bool []) ;; // 1.8 seconds
let f2 arr =
if Array.length arr > 0 then
Array.exists (fun e -> e = true) arr
else
false
for i in 0..60000000 do f2 ([||]:bool []) ;; // 0.430 seconds
```
Author
|
ive been advised that this belongs in visualfsharp, will close here and move accross |
This pull request was closed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
There may be a missing length check on exists, as without hte length check the cost of a comparison and a
callis incurred.Adding the simple len > 0 check before the loop appears (in the basic cases I have tested) to near triple performance.
Note: this is something I have found an isolated instance of, it may be appropriate to ensure that such checks (if they are required, I can only speak for my use case) are consistant accross other modules, such as Seq\List.