<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <p>Isn't that how suppose to be? 10000000 "hello worlds" ?<br>
    </p>
    <br>
    <div class="moz-cite-prefix">On 07/14/2016 06:42 AM, Geraldus wrote:<br>
    </div>
    <blockquote
cite="mid:CAB2YT56_bGnXnt5JjU4wUu=mNbRxhXnoib=LOG4hfsPN8Wg66w@mail.gmail.com"
      type="cite">
      <div dir="ltr">Your rust version pushes only 10'000'000 strings
        from arr into str, doesn't it?</div>
      <br>
      <div class="gmail_quote">
        <div dir="ltr">ср, 13 июл. 2016 г. в 16:41, Branimir Maksimovic
          <<a moz-do-not-send="true"
            href="mailto:branimir.maksimovic@gmail.com">branimir.maksimovic@gmail.com</a>>:<br>
        </div>
        <blockquote class="gmail_quote" style="margin:0 0 0
          .8ex;border-left:1px #ccc solid;padding-left:1ex">
          <div bgcolor="#FFFFFF" text="#000000">
            <p>rust (no need for array but anyway)</p>
            <p>[bmaxa@manjaro rust]$ time ./append<br>
              10000000 took 0.064016791<br>
              110000000 took 0.13466229<br>
              <br>
              real    0m0.204s<br>
              user    0m0.167s<br>
              sys    0m0.033s<br>
            </p>
            <p>haskell (your fastest version)</p>
            <p>[bmaxa@manjaro rust]$ time ./concat <br>
              "Done"<br>
              <br>
              real    0m0.224s<br>
              user    0m0.220s<br>
              sys    0m0.000s<br>
            </p>
            <p>c++ (no array)</p>
            <p>[bmaxa@manjaro rust]$ time ./a.out <br>
              <br>
              real    0m0.115s<br>
              user    0m0.100s<br>
              sys    0m0.013s<br>
            </p>
            <p>rust:</p>
            <p>use std::time::*;<br>
              <br>
              fn main() {<br>
                  let mut arr=Vec::new();<br>
                  arr.reserve(10_000_000);<br>
                  let start = Instant::now();<br>
                  for _ in 0 .. 10_000_000 {<br>
                      arr.push("hello world");<br>
                  }<br>
                  let end = start.elapsed();<br>
                  let diff = (end.as_secs()*1000000000 +
              end.subsec_nanos() as u64) as f64/1000000000.;<br>
                  println!("{} took {}",arr.len(),diff);<br>
                  let mut str = String::new();<br>
                  str.reserve(110_000_000);<br>
                  let start = Instant::now();<br>
                  for i in arr {<br>
                      str .push_str(i);<br>
                  }<br>
                  let end = start.elapsed();<br>
                  let diff = (end.as_secs()*1000000000 +
              end.subsec_nanos() as u64) as f64/1000000000.;<br>
                  println!("{} took {}",str.len(),diff);<br>
              }<br>
              <br>
              c++:</p>
            <p>#include <stdio.h><br>
              #include <string><br>
              <br>
              <br>
              int main() {<br>
                  std::string tmp;<br>
                  tmp.reserve(110000000);<br>
                  for (int i=0;i<10000000;i++) {<br>
                      tmp += "hello world";<br>
                  }<br>
              }<br>
              <br>
              Model name:            Intel(R) Core(TM) i3-5005U CPU @
              2.00GHz<br>
            </p>
          </div>
          <div bgcolor="#FFFFFF" text="#000000"> <br>
            <div>On 07/12/2016 05:36 AM, William Yager wrote:<br>
            </div>
            <blockquote type="cite">
              <div dir="ltr">You picked the single slowest way to do it.
                Please see <a moz-do-not-send="true"
                  href="https://gist.github.com/wyager/df063ad4edd9a9c8b0ab762c91a79894"
                  target="_blank">https://gist.github.com/wyager/df063ad4edd9a9c8b0ab762c91a79894</a>
                <div><br>
                </div>
                <div>All times are on my Intel Atom Macbook. Compiled
                  with -O3, no other options.</div>
                <div><br>
                </div>
                <div>Using Lazy Bytestrings (either through the Builder
                  interface or plain old concatenation) is about 7-7.5
                  times faster than string concatenation so on your
                  computer it should take about 0.12 seconds. In other
                  words, faster than C.</div>
                <div><br>
                </div>
                <div>This is my usual experience with lazy bytestrings;
                  due to their optimization for cache size, they are
                  extremely fast with almost no effort. They often
                  out-perform "fast" array operations in C due to fusion
                  and cache coherency. </div>
                <div><br>
                </div>
                <div>I will note that if you want to do exactly what C
                  does (often with only slightly different assembly
                  output), you can often achieve this with unboxed
                  vectors (mutable or immutable, depending on your
                  application).</div>
                <div><br>
                </div>
                <div>--Will<br>
                  <div class="gmail_extra"><br>
                    <div class="gmail_quote">On Mon, Jul 11, 2016 at
                      10:24 PM, Richard A. O'Keefe <span dir="ltr"><<a
                          moz-do-not-send="true"
                          href="mailto:ok@cs.otago.ac.nz"
                          target="_blank"><a class="moz-txt-link-abbreviated" href="mailto:ok@cs.otago.ac.nz">ok@cs.otago.ac.nz</a></a>></span>
                      wrote:
                      <blockquote class="gmail_quote" style="margin:0px
                        0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
                        <br>
                        Making a list of "Hello world" 10,000,000 times
                        and then<br>
                        concatenating that list to produce a single
                        String took<br>
                        0.87 seconds (start program to end program) in
                        Haskell.<br>
                      </blockquote>
                    </div>
                  </div>
                </div>
              </div>
              <br>
              <fieldset></fieldset>
              <br>
              <pre>_______________________________________________
Haskell-Cafe mailing list
To (un)subscribe, modify options or view archives go to:
<a moz-do-not-send="true" href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a>
Only members subscribed via the mailman list are allowed to post.</pre>
            </blockquote>
            <br>
          </div>
          _______________________________________________<br>
          Haskell-Cafe mailing list<br>
          To (un)subscribe, modify options or view archives go to:<br>
          <a moz-do-not-send="true"
            href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe"
            rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
          Only members subscribed via the mailman list are allowed to
          post.</blockquote>
      </div>
    </blockquote>
    <br>
  </body>
</html>