LooseObjects: Use File#exists when possible
When `trustFolderStat` flag is enabled we can use `File.exist()`
instead of rethrowing `FileNotFoundException`. This improves performance
of cloning and fetching.
A simple benchmark that generates a random `ObjectId` instance and then
tries to parse that object id, shows about 30% improvement with this
change.
The benchmark scenario was based on the stacktrace reported in jgit-5.
Where `RevWalk.parse()` call will eventually call `LooseObjects.open()`
and finally `LoseObjects.getOpenLoader()`.
Results on `master`:
(packFiles) Mode Cnt Score Error Units
10 avgt 2 137.400 us/op
100 avgt 2 1369.063 us/op
1000 avgt 2 13730.759 us/op
10000 avgt 2 137359.539 us/op
100000 avgt 2
1382627.641 us/op
With this change:
(packFiles) Mode Cnt Score Error Units
10 avgt 2 85.019 us/op
100 avgt 2 868.748 us/op
1000 avgt 2 8628.768 us/op
10000 avgt 2 86877.505 us/op
100000 avgt 2 863123.868 us/op
Issue: jgit-5
Change-Id: I366acf629873a5c7577a1032490faf57685f98dd