FS: Fix performance on high latency systems

fseek() in File::append() was invalidating the file buffer for each call
to append().  Better handling improves "import" performance test by 9%,
45% in "commit", on a system with a spinning disk.

This performance problem affects all operations where
{pending,completed}.data are rewritten.  During normal operation a
garbage collection can be enough to trigger it.  On storage with high
latency, e.g. networked, this previously took 20 seconds and more.
This commit is contained in:
Wilhelm Schuermann
2015-11-11 08:40:07 +01:00
parent e6f142be17
commit ad81810fd3
3 changed files with 20 additions and 7 deletions

View File

@@ -91,6 +91,7 @@ public:
void append (const std::string&);
void append (const std::vector <std::string>&);
void write_raw (const std::string&);
void truncate ();