Am 12.08.2017 um 13:47 schrieb Stefan Koch:
Hi Guys,

I've just implemented a subset of the std.format functionality.
In the same style that Johnathan Blow uses for JAI.

It's about 10x faster then using std.format and uses much less memory :)

the follwing code takes over 250 ms to compile :
{
     import std.format;
pragma(msg, format("Hello %s %s %s %s %s %s %s %s %s", " I ", "just", " have", " to", " concat", " a lot", " of", " strings ...", 9));
}
Whereas the following alternative takes 20 ms :
{
     import ctfe_utils;
pragma(msg, format_jai("Hello % % % % % % % % %", " I ", " just", " have" , " to", " concat", " a lot", " of", " strings ...", 9));
}

see for yourself:
https://www.youtube.com/watch?v=T0BJxdt61RY

I was a bit shocked by this number and performed a little test with multiple calls to format. Fortunately only the first one takes that long to compile. For 500 different calls I got about 2ms per call on Windows (which might get slowed down somewhat by the slow terminal output):

    import std.format;
    template T(size_t i) {
      static if (i > 0) {
        pragma(msg, format("Bye %s %s %s %s %s %s %s %s %s %s",
          i, " I ",  "just", " have", " to", " concat",  " a lot",
          " of", " strings ...", 9));
        enum T = T!(i-1);
      } else enum T = 0;
    }
    enum test = T!500;

Reply via email to