mirror of
https://github.com/google/cdc-file-transfer.git
synced 2026-09-13 01:10:44 +03:00
[cdc_rsync] Improve throughput for local copies (#74)
On Windows, fclose() seems to be very expensive for large files, where closing a 1 GB file takes up to 5 seconds. This CL calls fclose() in background threads. This tremendously improves local syncs, e.g. copying a 4.5 GB, 300 files data set takes only 7 seconds instead of 30 seconds. Also increases the buffer size for copying from 16K to 128K (better throughput for local copies), and adds a timestamp to debug and verbose console logs (useful when comparing client and server logs).
This commit is contained in:
+7
-6
@@ -126,21 +126,22 @@ void ConsoleLog::WriteLogMessage(LogLevel level, const char* file, int line,
|
||||
absl::MutexLock lock(&mutex_);
|
||||
|
||||
// Show leaner log messages in non-verbose mode.
|
||||
bool show_file_func = GetLogLevel() <= LogLevel::kDebug;
|
||||
bool show_time_file_func = GetLogLevel() <= LogLevel::kDebug;
|
||||
FILE* stdfile = level >= LogLevel::kError ? stderr : stdout;
|
||||
#if PLATFORM_WINDOWS
|
||||
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
|
||||
SetConsoleTextAttribute(hConsole, GetConsoleColor(level));
|
||||
if (show_file_func) {
|
||||
fprintf(stdfile, "%s(%i): %s(): %s\n", file, line, func, message);
|
||||
if (show_time_file_func) {
|
||||
fprintf(stdfile, "%0.3f %s(%i): %s(): %s\n", stopwatch_.ElapsedSeconds(),
|
||||
file, line, func, message);
|
||||
} else {
|
||||
fprintf(stdfile, "%s\n", message);
|
||||
}
|
||||
SetConsoleTextAttribute(hConsole, kLightGray);
|
||||
#else
|
||||
if (show_file_func) {
|
||||
fprintf(stdfile, "%-7s %s(%i): %s(): %s\n", GetLogLevelString(level), file,
|
||||
line, func, message);
|
||||
if (show_time_file_func) {
|
||||
fprintf(stdfile, "%-7s %0.3f %s(%i): %s(): %s\n", GetLogLevelString(level),
|
||||
stopwatch_.ElapsedSeconds(), file, line, func, message);
|
||||
} else {
|
||||
fprintf(stdfile, "%-7s %s\n", GetLogLevelString(level), message);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user