From: Oleg <oleg_inconnu@myrealbox.com>
To: "sebastien FURIC" <sebastien.furic@tni-valiosys.com>,
Shannon --jj Behrens <jjinux@yahoo.com>
Cc: caml-list@inria.fr
Subject: Sieve of Eratosthenes Performance: various languages (Re: [Caml-list] productivity improvement)
Date: Wed, 10 Jul 2002 16:15:33 -0400 [thread overview]
Message-ID: <200207102014.QAA14544@dewberry.cc.columbia.edu> (raw)
In-Reply-To: <3D2C063E.25EA1D8D@tni.fr>
On Wednesday 10 July 2002 06:02 am, sebastien FURIC wrote:
<snip>
> </caml>
>
> real 11m9.021s
> user 0m0.020s
> sys 0m0.030s
>
> Sebastien.
I guess this is an example of when very idiomatic C++ shines:
1 #include <iostream>
2 #include <vector>
3
4 typedef std::vector<int> vec;
5
6 void next_prime_candidate(int c, vec& v) {
7 for(int i = 0; i < v.size(); ++i)
8 if(c % v[i] == 0) return;
9 v.push_back(c);
10 }
11
12 void print_vec(vec& v) {
13 for(int i = 0; i < v.size(); ++i)
14 std::cout << ' ' << v[i];
15 }
16
17 int main() {
18 vec v; v.push_back(2);
19 for(int i = 3; v.size() < 10000; ++i)
20 next_prime_candidate(i, v);
21 print_vec(v);
22 }
Compiled with g++-3.0 -O2 on my aging AMD K6-2 550 MHz, I get
real 0m4.632s
user 0m3.290s
sys 0m0.260s
while for Sebastien's findprimes_simple.ml, compiled with ocamlopt, I get
real 0m43.809s
user 0m41.590s
sys 0m0.040s
C++ version does not get faster if I add v.reserve(10000) in the beginning,
so its bottleneck is probably not in memory allocation.
Perhaps O'Caml version can be made faster: here's my shot at it:
1 let next_prime_candidate c v =
2 let _ = try
3 Array.iter (fun x -> if c mod x = 0 then failwith "not a prime") !v;
4 v := Array.append !v [| c |];
5 with Failure "not a prime" -> () in ();;
6
7 let print_array v =
8 Array.iter (fun i -> print_char ' '; print_int i) v;;
9
10 let v = ref [| 2 |] in
11 let i = ref 2 in
12 let _ =
13 while Array.length !v < 10000 do
14 i := !i + 1;
15 next_prime_candidate !i v
16 done in
17 print_array !v;;
Timing:
real 0m11.645s
user 0m11.370s
sys 0m0.010s
Still 3-4 times slower. Is it because exceptions are used instead of
[non-existent ?] early function return or loop break?
A version of the last program with Lists instead of Arrays is 7-8 times
slower than the Array version.
Oleg
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
next prev parent reply other threads:[~2002-07-10 20:14 UTC|newest]
Thread overview: 92+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-07-08 19:53 [Caml-list] productivity improvement Oleg
2002-07-08 20:14 ` Michael Vanier
2002-07-10 15:50 ` John Max Skaller
2002-07-10 18:56 ` Alessandro Baretta
2002-07-10 19:09 ` Jun P.FURUSE
2002-07-11 23:43 ` Pierre Weis
[not found] ` <15657.61603.221054.289184@spike.artisan.com>
2002-07-09 4:43 ` [Caml-list] Universal Serializer (was: productivity improvement) Oleg
2002-07-09 7:56 ` Nicolas Cannasse
2002-07-09 7:59 ` Nicolas Cannasse
2002-07-10 16:06 ` John Max Skaller
2002-07-10 22:29 ` Michael Vanier
2002-07-11 8:13 ` Nicolas Cannasse
2002-07-12 12:41 ` John Max Skaller
2002-07-14 12:25 ` [Caml-list] Statically detecting arrays bound exceptions ?? (was: Universal Serializer) Berke Durak
2002-07-14 13:24 ` Alessandro Baretta
2002-07-15 8:23 ` Xavier Leroy
2002-07-15 8:39 ` Noel Welsh
2002-07-15 21:22 ` Oleg
2002-07-15 22:44 ` Michael Vanier
2002-07-16 6:43 ` Florian Hars
2002-07-16 20:22 ` [Caml-list] " John Max Skaller
2002-07-16 20:36 ` Johan Baltié
2002-07-16 20:55 ` Hao-yang Wang
2002-07-17 8:25 ` Noel Welsh
2002-07-12 1:41 ` [Caml-list] Universal Serializer (was: productivity improvement) Eray Ozkural
2002-07-12 8:10 ` [Caml-list] OCaml QT bindings Stefano Zacchiroli
2002-07-12 17:30 ` Eray Ozkural
2002-07-12 10:37 ` [Caml-list] Re: productivity improvement Oleg
2002-07-12 11:23 ` Markus Mottl
2002-07-12 11:34 ` Oleg
2002-07-12 11:43 ` Markus Mottl
2002-07-12 12:59 ` Pierre Weis
2002-07-12 16:42 ` Markus Mottl
2002-07-14 20:44 ` Dave Berry
2002-07-14 22:13 ` Markus Mottl
2002-07-15 16:43 ` Alwyn Goodloe
2002-07-16 20:14 ` Dave Berry
2002-07-17 3:21 ` Eric Merritt
2002-07-15 9:39 ` Alessandro Baretta
2002-10-15 8:38 ` Eray Ozkural
2002-10-17 21:27 ` Dave Berry
2002-10-18 2:48 ` Eray Ozkural
2002-10-20 12:46 ` Dave Berry
2002-10-21 6:11 ` Michael Vanier
2003-05-10 20:41 ` Eray Ozkural
2002-07-12 11:43 ` Noel Welsh
2002-07-12 12:10 ` Markus Mottl
2002-07-12 13:44 ` John Max Skaller
2002-07-12 16:19 ` Alan Schmitt
2002-07-12 20:41 ` John Carr
2002-07-13 21:19 ` [Caml-list] Re: productivity improvementu Pierre Weis
2002-07-12 21:24 ` [Caml-list] Re: productivity improvement Brian Smith
2002-10-15 8:57 ` Eray Ozkural
2002-10-15 11:50 ` [Caml-list] eproductivity improvement Alessandro Baretta
2002-07-09 12:45 ` [Caml-list] productivity improvement Basile STARYNKEVITCH
2002-07-09 18:20 ` Shannon --jj Behrens
2002-07-09 19:16 ` Oleg
2002-07-09 20:31 ` Shannon --jj Behrens
2002-07-10 10:02 ` sebastien FURIC
2002-07-10 11:58 ` Dave Mason
2002-07-10 13:11 ` sebastien FURIC
2002-07-10 19:22 ` nadji
2002-07-10 20:15 ` Oleg [this message]
2002-07-10 20:34 ` [Caml-list] Re: Sieve of Eratosthenes Performance: various languages (Re: [Caml-list] productivity improvement) William D. Neumann
2002-07-10 20:47 ` [Caml-list] Re: Sieve of Eratosthenes Performance: various languages Alexander V.Voinov
2002-07-10 21:16 ` William D. Neumann
2002-07-10 20:49 ` [Caml-list] Re: Sieve of Eratosthenes Performance: various languages (Re: [Caml-list] productivity improvement) William D. Neumann
2002-07-11 22:30 ` [Caml-list] Array.resize ? Oleg
2002-07-11 23:06 ` Alessandro Baretta
2002-07-12 13:01 ` John Max Skaller
2002-07-12 18:24 ` Shawn Wagner
2002-07-11 23:31 ` Markus Mottl
2002-07-12 12:54 ` John Max Skaller
2002-07-12 13:23 ` Olivier Andrieu
2002-07-12 14:05 ` John Max Skaller
2002-07-12 16:09 ` Brian Rogoff
2002-10-19 9:16 ` Eray Ozkural
2002-10-19 22:15 ` [Caml-list] debugger losing contact with debuggee process Lex Stein
2002-10-20 10:06 ` Pierre Weis
2002-10-21 9:11 ` Xavier Leroy
2002-10-18 3:05 ` [Caml-list] Array.resize ? Eray Ozkural
2002-10-19 1:51 ` Oleg
2003-05-10 20:24 ` Eray Ozkural
2002-07-10 20:48 ` Sieve of Eratosthenes Performance: various languages (Re: [Caml-list] productivity improvement) Markus Mottl
2002-07-11 5:53 ` Anton E. Moscal
2002-10-18 3:07 ` Eray Ozkural
2002-07-10 15:39 ` [Caml-list] productivity improvement John Max Skaller
2002-07-11 8:57 ` Nicolas barnier
2002-07-12 12:16 ` [Caml-list] Is this a bug? John Max Skaller
2002-07-12 14:05 ` Xavier Leroy
2002-07-16 3:34 ` [Caml-list] productivity improvement Oleg
2002-10-18 3:13 ` Eray Ozkural
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200207102014.QAA14544@dewberry.cc.columbia.edu \
--to=oleg_inconnu@myrealbox.com \
--cc=caml-list@inria.fr \
--cc=jjinux@yahoo.com \
--cc=sebastien.furic@tni-valiosys.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox