> On 11 Nov 2018, at 10:29, Alistair Grant <[email protected]> wrote:
> 
> File is a low level API that is only used in limited circumstances,
> e.g. bootstrapping when FileSystem isn't yet available.

Another reason not to use File is because it is slower as it is unbuffered.

For the following file

$ file test.png 
test.png: PNG image data, 950 x 936, 8-bit/color RGBA, non-interlaced

$ ls -la test.png 
-rw-r--r--@ 1 sven  staff  241773 Nov 11 13:39 test.png

I get

[ ImageReadWriter formFromFileNamed: 'test.png' ] bench.
 "'8.725 per second'"

[ ImageReadWriter formFromStream: 'test.png' asFileReference binaryReadStream ] 
bench.
 "'8.914 per second'"

[ ImageReadWriter formFromStream: (File named: 'test.png') readStream ] bench.
 "'6.023 per second'"

By preventing the auto detection of the type and the subclass lookup, we can 
improve a little bit more.

[ PNGReadWriter formFromStream: 'test.png' asFileReference binaryReadStream ] 
bench.
 "'9.113 per second'"

Sven


Reply via email to