[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[aspell-devel] optimizations
From: |
Karl Chen |
Subject: |
[aspell-devel] optimizations |
Date: |
26 Apr 2004 16:52:59 -0700 |
User-agent: |
Gnus/5.09 (Gnus v5.9.0) Emacs/21.3.50 |
>>>>> "Kevin" == Kevin Atkinson <address@hidden> writes:
>> Gcc 3.3 requires constants (empty_str) to be initialized.
>> (BTW, you could probably make it static const or just write
>> the value instead of empty_str)
Kevin>
Kevin> Its a minor memory optimization. The idea is to avoid
Kevin> having to dereference a distant memory location just to
Kevin> discover that it is the empty string.
Are you sure this is really worth it? (I'm asking, not being rude.)
It seems like a very premature optimization (trying to make sure
that the string contents are in L1 cache). For example, if you
wanted to trade simplicity for acute optimizations you could use
NULL instead of "" to indicate empty strings to avoid the
memory-load altogether when reading the value.
Since gcc pools equal string constants together, there's only one
memory location to read; other string constants are likely to be
nearby also. So if you dereference the value of "" a lot then
it's likely to already be in L1 cache anyway.
For writing the value your optimization is actually worse;
consider this code:
extern void bar(char const*);
struct C {
const char* s;
const char z[1];
C() : z() {}
int foo1();
int foo2();
int quux1();
int quux2();
};
int C::foo1() { bar(""); return 1;}
int C::foo2() { bar(z); return 1;}
int C::quux1() { s = ""; return 1;}
int C::quux2() { s = z; return 1;}
Compiled with: g++-3.3 -March=i686 -S -O2 a.cc
bar(""):
movl $.LC0, (%esp)
call _Z3barPKc
bar(z):
movl 8(%ebp), %eax
addl $4, %eax
movl %eax, (%esp)
call _Z3barPKc
s = "":
movl 8(%ebp), %eax
movl $.LC0, (%eax)
s = z:
movl 8(%ebp), %edx
leal 4(%edx), %eax
movl %eax, (%edx)
movl $1, %eax
P.S. I think either way the effort is wasted doing this kind of
optimization in a spell-checker. Since it sounds from the web
page you're strapped for time/energy, I think it's more important
to work on featureset, bugs, etc. than rewriting/optimizing STL.
--
Karl 2004-04-24 13:10
- [aspell-devel] optimizations,
Karl Chen <=