OSDN Git Service

Change the idx cache archive from xml to binary for speed.
authorAiwota Programmer <aiwotaprog@tetteke.tk>
Tue, 30 Jun 2009 10:16:50 +0000 (19:16 +0900)
committerAiwota Programmer <aiwotaprog@tetteke.tk>
Tue, 30 Jun 2009 10:16:50 +0000 (19:16 +0900)
src/thread_idx_cache.cxx
src/thread_idx_cache.hxx

index 55ae2ca..02c1e61 100644 (file)
 
 #include "thread_idx_cache.hxx"
 
-#include <boost/archive/xml_iarchive.hpp>
-#include <boost/archive/xml_oarchive.hpp>
-#include <boost/serialization/nvp.hpp>
+#include <boost/archive/binary_iarchive.hpp>
+#include <boost/archive/binary_oarchive.hpp>
 #include <boost/serialization/vector.hpp>
 #include <boost/filesystem.hpp>
-#include <boost/exception.hpp>
 #include <boost/foreach.hpp>
 #include <boost/xpressive/xpressive.hpp>
 #include <boost/unordered_map.hpp>
@@ -50,8 +48,8 @@ std::vector<ThreadIdxCache> ThreadIdxCache::from_xml(
       boost::filesystem::is_regular_file(cache_xml)) {
     std::ifstream ifs(cache_xml.file_string().c_str());
     try {
-      boost::archive::xml_iarchive ia(ifs);
-      ia >> boost::serialization::make_nvp("ThreadIdxCache", cache_vector);
+      boost::archive::binary_iarchive ia(ifs);
+      ia >> cache_vector;
     } catch (const boost::archive::archive_exception& e) {
       // TODO thread safety.
       std::cerr << "ThreadIdxCache::from_xml(): " << e.what() << std::endl;
@@ -69,8 +67,8 @@ void ThreadIdxCache::to_xml(const boost::filesystem::path& cache_xml,
   if (!misc::create_directories(cache_xml.parent_path())) return;
   std::ofstream ofs(cache_xml.file_string().c_str());
   try {
-    boost::archive::xml_oarchive oa(ofs);
-    oa << boost::serialization::make_nvp("ThreadIdxCache", cache);
+    boost::archive::binary_oarchive oa(ofs);
+    oa << cache;
   } catch (const boost::archive::archive_exception& e) {
     std::cerr << "ThreadIdxCache::to_xml(): " << e.what() << std::endl;
   }
@@ -80,7 +78,7 @@ void ThreadIdxCache::to_xml(const boost::filesystem::path& cache_xml,
 std::vector<ThreadIdxCache> ThreadIdxCache::from_directory(
     const boost::filesystem::path& idx_dir) {
 
-  const boost::filesystem::path cache_xml = idx_dir / "cache.xml";
+  const boost::filesystem::path cache_xml = idx_dir / ".cache";
   std::vector<ThreadIdxCache> cache_vector = ThreadIdxCache::from_xml(cache_xml);
 
   boost::unordered_map<ThreadID, ThreadIdxCache> caches;
index b7b7dcd..c5ad980 100644 (file)
@@ -22,7 +22,6 @@
 #define THREAD_IDX_CACHE_HXX
 
 #include <boost/serialization/access.hpp>
-#include <boost/serialization/nvp.hpp>
 #include <boost/filesystem.hpp>
 #include <boost/unordered_map.hpp>
 #include <boost/unordered_set.hpp>
@@ -66,10 +65,10 @@ private:
   friend class boost::serialization::access;
   template <typename ArchiveType>
   void serialize(ArchiveType& ar, const unsigned int version) {
-    ar & boost::serialization::make_nvp("ID", id_);
-    ar & boost::serialization::make_nvp("Title", title_);
-    ar & boost::serialization::make_nvp("IdxLastModified", idx_last_modified_);
-    ar & boost::serialization::make_nvp("LineCount", line_count_);
+    ar & id_;
+    ar & title_;
+    ar & idx_last_modified_;
+    ar & line_count_;
   }
 };