[Xapian-discuss] FLAG_WILDCARD, add_database and performance
Oliver Flimm
flimm at ub.uni-koeln.de
Fri Aug 8 09:40:35 BST 2008
Hi,
On Tue, Aug 05, 2008 at 03:42:23PM +0100, Olly Betts wrote:
> On Mon, Aug 04, 2008 at 02:50:33PM +0200, Oliver Flimm wrote:
> > 1915840 80.4207 libc-2.3.6.so libc-2.3.6.so
> > _int_malloc
> > 1915840 99.9993 libc-2.3.6.so libc-2.3.6.so
> > _int_malloc [self]
>
> Can you try this patch? It's against SVN trunk, but will probably apply
> to 1.0.7. If not and you can't get it to apply, let me know and I'll
> fix it up, but I need to go to bed right now.
>
> http://oligarchy.co.uk/xapian/patches/multiallterms.patch
>
> This passes the testsuite, but I wouldn't recommend it for production
> use without further testing.
>
> I suspect this will help quite a bit, but that more may be possible, so
> when you rebuild Xapian, make sure that debugging information is being
> generated ("-g" in CXXFLAGS, which is the default) and that you don't
> strip the library. Then if you need to rerun oprofile we can see where
> in libxapian is making all these calls to libc. Or whatever the new
> bottleneck is.
Sorry for the delay. I patched 1.0.7 with your patch and built it with
the debugging information without stripping the library.
The request for 'java program*' now takes 235 seconds and here is the
output of oprofile:
CPU: Core 2, speed 2666.68 MHz (estimated)
Counted CPU_CLK_UNHALTED events (Clock cycles when not halted) with a
unit mask of 0x00 (Unhalted core cycles) count 10000
0
samples % image name app name
symbol name
-------------------------------------------------------------------------------
1 100.000 libc-2.3.6.so libc-2.3.6.so
__rpc_thread_destroy
487970 65.9735 libc-2.3.6.so libc-2.3.6.so
_int_malloc
487970 99.9990 libc-2.3.6.so libc-2.3.6.so
_int_malloc [self]
4 8.2e-04 libxapian.so.15.5.1 libc-2.3.6.so
Xapian::Query::Internal::get_description() const
1 2.0e-04 libxapian.so.15.5.1 libc-2.3.6.so
std::basic_string<char, std::char_traits<char>, std:
:allocator<char> > std::operator+<char, std::char_traits<char>,
std::allocator<char> >(char const*, std::basic_string<char
, std::char_traits<char>, std::allocator<char> > const&)
-------------------------------------------------------------------------------
91871 12.4210 no-vmlinux no-vmlinux
(no symbols)
91871 100.000 no-vmlinux no-vmlinux
(no symbols) [self]
-------------------------------------------------------------------------------
80236 10.8479 libxapian.so.15.5.1 libxapian.so.15.5.1
OrPostList::get_termfreq_est() const
80236 100.000 libxapian.so.15.5.1 libxapian.so.15.5.1
OrPostList::get_termfreq_est() const [self]
-------------------------------------------------------------------------------
11564 1.5635 libperl.so.5.8.8 libperl.so.5.8.8
(no symbols)
11564 100.000 libperl.so.5.8.8 libperl.so.5.8.8
(no symbols) [self]
-------------------------------------------------------------------------------
10784 1.4580 libxapian.so.15.5.1 libxapian.so.15.5.1
LeafPostList::get_termfreq_est() const
10784 100.000 libxapian.so.15.5.1 libxapian.so.15.5.1
LeafPostList::get_termfreq_est() const [self]
-------------------------------------------------------------------------------
9925 1.3419 libxapian.so.15.5.1 libxapian.so.15.5.1
std::_Rb_tree<std::string, std::pair<std::string const
, unsigned int>, std::_Select1st<std::pair<std::string const, unsigned
int> >, std::less<std::string>, std::allocator<std:
:pair<std::string const, unsigned int> > >::lower_bound(std::string
const&)
9925 100.000 libxapian.so.15.5.1 libxapian.so.15.5.1
std::_Rb_tree<std::string, std::pair<std::string con
st, unsigned int>, std::_Select1st<std::pair<std::string const,
unsigned int> >, std::less<std::string>, std::allocator<st
d::pair<std::string const, unsigned int> > >::lower_bound(std::string
const&) [self]
-------------------------------------------------------------------------------
6540 0.8842 libxapian.so.15.5.1 libxapian.so.15.5.1
std::_Rb_tree<std::string, std::pair<std::string const
, unsigned int>, std::_Select1st<std::pair<std::string const, unsigned
int> >, std::less<std::string>, std::allocator<std:
:pair<std::string const, unsigned int> > >::find(std::string const&)
const
6540 100.000 libxapian.so.15.5.1 libxapian.so.15.5.1
std::_Rb_tree<std::string, std::pair<std::string con
st, unsigned int>, std::_Select1st<std::pair<std::string const,
unsigned int> >, std::less<std::string>, std::allocator<st
d::pair<std::string const, unsigned int> > >::find(std::string const&)
const [self]
-------------------------------------------------------------------------------
5551 0.7505 libstdc++.so.6.0.8 libstdc++.so.6.0.8
(no symbols)
5551 100.000 libstdc++.so.6.0.8 libstdc++.so.6.0.8
(no symbols) [self]
-------------------------------------------------------------------------------
3922 0.5303 libxapian.so.15.5.1 libxapian.so.15.5.1
FlintPostList::get_termfreq() const
3922 100.000 libxapian.so.15.5.1 libxapian.so.15.5.1
FlintPostList::get_termfreq() const [self]
-------------------------------------------------------------------------------
2634 0.3561 libxapian.so.15.5.1 libxapian.so.15.5.1
std::_Rb_tree<std::string, std::pair<std::string const
, Xapian::MSet::Internal::TermFreqAndWeight>,
std::_Select1st<std::pair<std::string const,
Xapian::MSet::Internal::TermFre
qAndWeight> >, std::less<std::string>,
std::allocator<std::pair<std::string const,
Xapian::MSet::Internal::TermFreqAndWeig
ht> > >::insert_unique(std::pair<std::string const,
Xapian::MSet::Internal::TermFreqAndWeight> const&)
2634 100.000 libxapian.so.15.5.1 libxapian.so.15.5.1
std::_Rb_tree<std::string, std::pair<std::string con
st, Xapian::MSet::Internal::TermFreqAndWeight>,
std::_Select1st<std::pair<std::string const,
Xapian::MSet::Internal::TermF
reqAndWeight> >, std::less<std::string>,
std::allocator<std::pair<std::string const,
Xapian::MSet::Internal::TermFreqAndWe
ight> > >::insert_unique(std::pair<std::string const,
Xapian::MSet::Internal::TermFreqAndWeight> const&) [self]
-------------------------------------------------------------------------------
2533 0.3425 libxapian.so.15.5.1 libxapian.so.15.5.1
Key_::operator<(Key_) const
2533 100.000 libxapian.so.15.5.1 libxapian.so.15.5.1
Key_::operator<(Key_) const [self]
-------------------------------------------------------------------------------
2525 0.3414 libxapian.so.15.5.1 libxapian.so.15.5.1
std::_Rb_tree<std::string, std::pair<std::string const
, Xapian::MSet::Internal::TermFreqAndWeight>,
std::_Select1st<std::pair<std::string const,
Xapian::MSet::Internal::TermFre
qAndWeight> >, std::less<std::string>,
std::allocator<std::pair<std::string const,
Xapian::MSet::Internal::TermFreqAndWeig
ht> > >::find(std::string const&)
2525 100.000 libxapian.so.15.5.1 libxapian.so.15.5.1
std::_Rb_tree<std::string, std::pair<std::string con
st, Xapian::MSet::Internal::TermFreqAndWeight>,
std::_Select1st<std::pair<std::string const,
Xapian::MSet::Internal::TermF
reqAndWeight> >, std::less<std::string>,
std::allocator<std::pair<std::string const,
Xapian::MSet::Internal::TermFreqAndWe
ight> > >::find(std::string const&) [self]
Regards,
Oliver
--
Universitaet zu Koeln :: Universitaets- und Stadtbibliothek
IT-Dienste :: Abteilung Universitaetsgesamtkatalog
Universitaetsstr. 33 :: D-50931 Koeln
Tel.: +49 221 470-3330 :: Fax: +49 221 470-5166
flimm at ub.uni-koeln.de :: www.ub.uni-koeln.de
More information about the Xapian-discuss
mailing list