Is there a 'catch' with FastFormat?

前端 未结 6 2094
天命终不由人
天命终不由人 2021-02-05 11:16

I just read about the FastFormat C++ i/o formatting library, and it seems too good to be true: Faster even than printf, typesafe, and with what I consider a pleasing interface:<

6条回答
  •  后悔当初
    2021-02-05 11:53

    Found one "catch", though for most people it will never manifest. From the project page:

    Atomic operation. It doesn't write out statement elements one at a time, like the IOStreams, so has no atomicity issues

    The only way I can see this happening is if it buffers the whole write() call's output itself, then writes it out to the ostream in one step. This means it needs to allocate memory, and if an object passed into the write() call produces a lot of output (several megabytes or more), it can consume up to twice that much memory in internal buffers (assuming it uses the grow-a-buffer-by-doubling-its-size-each-time trick).

    If you're just using it for logging, and not, say, dumping huge amounts of XML, you'll never see this problem.

    The only other "catch" I'm seeing is:

    Highly portable. It will work with all good modern C++ compilers; it even works with Visual C++ 6!

    So it won't work with an old C++ compiler, like cfront, whereas iostreams is backward compatible to the late 80's. Again, I'd be surprised if anyone ever had a problem with this.

提交回复
热议问题