From: Brian Hurt <bhurt@janestcapital.com>
To: skaller <skaller@users.sourceforge.net>
Cc: Caml-list List <caml-list@inria.fr>
Subject: Re: [Caml-list] Correct way of programming a CGI script
Date: Tue, 09 Oct 2007 08:52:10 -0400 [thread overview]
Message-ID: <470B797A.3080904@janestcapital.com> (raw)
In-Reply-To: <1191879429.28011.27.camel@rosella.wigram>
[-- Attachment #1: Type: text/plain, Size: 1721 bytes --]
skaller wrote:
>On Mon, 2007-10-08 at 18:04 +0200, Gerd Stolpmann wrote:
>
>
>
>>>I heard that OCaml is particularly slow (and probably
>>>memory-inefficient) when it comes to string manipulation.
>>>
>>>
>>No, this is nonsense. Of course, you can slow everything down by using
>>strings in an inappropriate way, like
>>
>>let rec concat_list l =
>> match l with
>> [] -> ""
>> | s :: l' -> s ^ concat_list l'
>>
>>
>
>Now Gerd, I would not call the claim nonsense. If you can't
>use a data structure in a natural way, I'd say the claim indeed
>has some weight.
>
>The example above is ugly because it isn't tail recursive.
>If you consider an imperative loop to concat the strings
>in an array
>
> let s = ref "" in
> for i = 0 to Array.length a do
> s := !s ^ a.[i]
> done;
>
>then Ocaml is likely to do this slowly. C++ on the other
>hand will probably do this faster, especially if you reserve
>enough storage first.
>
>
And if you don't, and thus have to repeatedly allocate more memory, C++
is likely going to be slower than Ocaml (poor allocation performance).
In fact, I'm willing to bet you can get near C++ speed by doing things
in the C++ way- allocate the string once (with enough space), and then
use String.blit to fill it in.
That said, there are better implementations of strings for Ocaml. So
what? Ocaml isn't a string processing language. Yeah, there are things
which are probably better done in Perl/Python/Ruby. A language doesn't
have to be the perfect language for all purposes in order to be a good
language- in fact, in my experience languages that try to be everything
to everybody end up being useless for all purposes (C++ being example #1
here).
Brian
[-- Attachment #2: Type: text/html, Size: 2228 bytes --]
next prev parent reply other threads:[~2007-10-09 13:01 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-10-08 15:08 Tom
2007-10-08 15:32 ` [Caml-list] " Dario Teixeira
2007-10-08 16:04 ` Gerd Stolpmann
2007-10-08 21:37 ` skaller
2007-10-08 22:21 ` Erik de Castro Lopo
2007-10-08 23:05 ` skaller
2007-10-08 23:19 ` skaller
2007-10-08 23:23 ` Arnaud Spiwack
2007-10-08 23:47 ` skaller
2007-10-09 5:49 ` David Teller
2007-10-09 10:15 ` Christophe TROESTLER
2007-10-09 15:29 ` skaller
2007-10-09 15:49 ` Vincent Hanquez
2007-10-09 16:00 ` Jon Harrop
2007-10-09 14:02 ` William D. Neumann
2007-10-09 15:25 ` skaller
2007-10-09 15:33 ` William D. Neumann
2007-10-09 15:48 ` Jon Harrop
2007-10-08 23:37 ` skaller
2007-10-09 10:20 ` Christophe TROESTLER
2007-10-09 13:40 ` Rope is the new string Jon Harrop
2007-10-09 15:57 ` [Caml-list] " Vincent Hanquez
2007-10-09 16:42 ` Loup Vaillant
2007-10-09 16:55 ` Vincent Hanquez
2007-10-09 17:32 ` Loup Vaillant
2007-10-09 19:51 ` Vincent Hanquez
2007-10-09 21:06 ` Loup Vaillant
2007-10-10 7:35 ` Vincent Hanquez
2007-10-10 8:05 ` Loup Vaillant
2007-10-11 13:23 ` Vincent Hanquez
2007-10-09 22:04 ` Chris King
2007-10-11 13:03 ` Vincent Hanquez
2007-10-11 13:54 ` skaller
2007-10-11 14:21 ` Vincent Hanquez
2007-10-11 14:27 ` Benjamin Monate
2007-10-11 14:48 ` skaller
2007-10-11 21:16 ` Alain Frisch
2007-10-15 20:35 ` Warning on home-made functions dealing with UTF-8 Julien Moutinho
2007-10-15 23:51 ` [Caml-list] " skaller
2007-10-16 2:21 ` Julien Moutinho
2007-10-16 18:46 ` Julien Moutinho
2007-10-16 18:51 ` Julien Moutinho
2007-10-17 2:23 ` [Caml-list] " skaller
2007-10-09 10:26 ` [Caml-list] Correct way of programming a CGI script Gerd Stolpmann
2007-10-09 15:16 ` skaller
2007-10-09 15:31 ` William D. Neumann
2007-10-09 12:52 ` Brian Hurt [this message]
2007-10-09 13:56 ` Jon Harrop
2007-10-09 15:18 ` William D. Neumann
2007-10-08 16:11 ` Loup Vaillant
2007-10-08 19:07 ` Christophe TROESTLER
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=470B797A.3080904@janestcapital.com \
--to=bhurt@janestcapital.com \
--cc=caml-list@inria.fr \
--cc=skaller@users.sourceforge.net \
/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