From b33d1fba74b86d5b5566b562935aa48c73d196ea Mon Sep 17 00:00:00 2001 From: Duncan Mac-Vicar P Date: Tue, 18 Jul 2006 15:42:37 +0000 Subject: [PATCH] reduce factory parsing from 30 sec to about 25 using different string find function --- zypp/parser/yum/YUMFileListParser.cc | 43 +++++++++++++++++++++++++----------- 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/zypp/parser/yum/YUMFileListParser.cc b/zypp/parser/yum/YUMFileListParser.cc index 26c7710..b1269c0 100644 --- a/zypp/parser/yum/YUMFileListParser.cc +++ b/zypp/parser/yum/YUMFileListParser.cc @@ -10,8 +10,6 @@ * */ - - #include #include #include @@ -24,13 +22,15 @@ #include #include #include - +#include +#include using namespace std; namespace zypp { namespace parser { namespace yum { +static boost::regex filenameRegex("^.*(/bin/|/sbin/|/lib/|/lib64/|/etc/|/usr/share/dict/words/|/usr/games/|/usr/share/magic\\.mime|/opt/gnome/games).*$"); YUMFileListParser::YUMFileListParser(istream &is, const string& baseUrl) : XMLNodeIterator(is, baseUrl,FILELISTSCHEMA) @@ -105,16 +105,32 @@ namespace zypp { } else if (name == "file") { string filename = _helper.content( child ); - if (filename.find("/bin/") != string::npos - || filename.find("/sbin/") != string::npos - || filename.find("/lib/") != string::npos - || filename.find("/lib64/") != string::npos - || filename.find("/etc/") != string::npos - || filename.find("/usr/games/") != string::npos - || filename.find("/usr/share/dict/words") != string::npos - || filename.find("/usr/share/magic.mime") != string::npos - || filename.find("/opt/gnome/games") != string::npos) - { +#if 0 + if ( boost::regex_match(filename, filenameRegex) ) +#endif +#if 0 + if (filename.find("/bin/") != string::npos + || filename.find("/sbin/") != string::npos + || filename.find("/lib/") != string::npos + || filename.find("/lib64/") != string::npos + || filename.find("/etc/") != string::npos + || filename.find("/usr/games/") != string::npos + || filename.find("/usr/share/dict/words") != string::npos + || filename.find("/usr/share/magic.mime") != string::npos + || filename.find("/opt/gnome/games") != string::npos) +#endif +#if 1 + if ( boost::find_first(filename, "/bin/") + || boost::find_first(filename, "/sbin/") + || boost::find_first(filename, "/lib/") + || boost::find_first(filename, "/lib64/") + || boost::find_first(filename, "/etc/") + || boost::find_first(filename, "/usr/games/") + || boost::find_first(filename, "/usr/share/dict/words") + || boost::find_first(filename, "/usr/share/magic.mime") + || boost::find_first(filename, "/opt/gnome/games") ) +#endif + { dataPtr->files.push_back( FileData( filename, _helper.attribute( child, "type" ) ) ); } } @@ -124,6 +140,7 @@ namespace zypp { } } } + //std::cout << dataPtr->files.size() << std::endl; return dataPtr; } -- 2.7.4