On Tue, Oct 18, 2016 at 12:09 PM, Steven Bosscher <stevenb....@gmail.com> wrote: > On Thu, Oct 13, 2016 at 5:16 PM, Janne Blomqvist wrote: >> +static bool *newunits; > > You could make this a bitmap (like sbitmap). A bit more code but makes > a potentially quadratic search (when opening many units) less time > consuming.
I did think about that, yes, but decided that it wasn't worth the extra complexity since a) The OS typically limits the number of fd's per process to a relatively small number (typically 1024 by default). b) For better or worse, in libgfortran a unit is a quite big structure, not to mention the 8 kB buffer. So obsessing over wasting an extra 7 bits per unit seemed pointless. c) Due to the newunit_lwi, in many scenarios it should be able to skip scanning over, if not all then at least most of, the in-use units. Of course, it's possible to design a scenario which defeats the lwi, but, is that something real software does? And even if it does, due to a) above I think the effect would be quite modest anyway. -- Janne Blomqvist