Boost logo

Boost :

Subject: Re: [boost] [afio] AFIO review postponed till Monday
From: glenfernandes (glen.fernandes_at_[hidden])
Date: 2015-07-22 10:58:10

Niall Douglas wrote:
> Really with async file i/o it's always more a question of control rather
> than performance. In the naïve case performance will usually be higher by
> going synchronous.

I might be misunderstanding you, so I will try harder to get on the same
page. Even though English is the only language I know, I know it poorly. :-)

Why would anyone interested in reviewing AFIO care about getting more
performance by going synchronous? The reason they're interested in an
asynchronous file I/O library is because they need asynchronous file I/O,

Control over performance sounds great, but it's not control over performance
if it comes at a cost of performance, right? [Example: I see the support of
the C++ allocator model as something which can sometimes offer control over
performance, but in no way does it make things any slower at runtime when
the allocator supplied is std::allocator than if the code just used 'new'
and 'delete'. --end example]

I thought motivation to use your library would be one or more of:
- Simplicity (makes it easier to write maintainable file I/O code)
- Portability (saves me time from writing platform specific code)
- Performance (it is faster than code I would write by hand)

On simplicity: If someone does not care about portability, can they write
smaller/cleaner/more-maintainable code if they choose to use AFIO versus
using overlapped I/O with IOCPs or KAIO? Does it sacrifice any simplicity
for portability?

On performance: Is it faster or at least no slower than any other libraries?
(e.g. libuv) Does it sacrifice any performance for portability?

On portability: Does it entirely abstract away any platform specific issues?
(e.g. Do you believe a user of AFIO will be required to write
platform-specific code as in your examples?)

> Now with the race free filesystem extensions [...] things have changed.
> If you were wanting to write portable code capable of working under a
> changing filesystem you get no choice but AFIO right now in any language
> (that I am aware of).

Does the documentation show (with examples) how AFIO helps here?


View this message in context:
Sent from the Boost - Dev mailing list archive at

Boost list run by bdawes at, gregod at, cpdaniel at, john at