<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>