Browse thread
one-time initialization
- Michael Hicks
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Michael Hicks <mwh@d...> |
| Subject: | one-time initialization |
I wonder if anyone knows how to optimize the following (simplified for the
sake of dicussion) situation:
let global = ref None
let init i =
global := Some i
let f () =
match (!global) with
Some x -> x
| None -> failwith "not initialized";;
let g() =
match (!global) with
...
Essentially, there is some global state that is initialized once, and is
used by all functions in the module. In a more realistic situation, this
state might be initialized by reading in a file. Given that following
initialization the global state never changes, it should be conceivable to
eliminate the match and dereference; on my machine (pentium 166), the match
and dereference result in about a 30% slowdown. I've fooled around with
some things, but haven't found anything that performs better than this
straightforward approach or is any more elegant.
Thanks,
Mike
--
Michael Hicks
Ph.D. Candidate, the University of Pennsylvania
http://www.cis.upenn.edu/~mwh mailto://mwh@dsl.cis.upenn.edu
"I worked with an individual who plugged his power strip back into itself
and for the life of him could not understand why his computer would not
turn on."