@@ -1875,7 +1875,8 @@ ImageCacheImpl::getstats(int level) const
1875
1875
spin_lock lock (m_perthread_info_mutex);
1876
1876
size_t nthreads = m_all_perthread_info.size ();
1877
1877
if (nthreads > 1 || level > 2 ) {
1878
- double perthreadtime = stats.fileio_time / (float )nthreads;
1878
+ double perthreadtime = stats.fileio_time
1879
+ / std::max (size_t (1 ), nthreads);
1879
1880
print (out, " ({} average per thread, for {} threads)" ,
1880
1881
Strutil::timeintervalformat (perthreadtime), nthreads);
1881
1882
}
@@ -1895,14 +1896,16 @@ ImageCacheImpl::getstats(int level) const
1895
1896
m_stat_tiles_created, m_stat_tiles_current,
1896
1897
m_stat_tiles_peak);
1897
1898
print (out, " total tile requests : {}\n " , stats.find_tile_calls );
1898
- print (out, " micro-cache misses : {} ({:.1f}%)\n " ,
1899
- stats.find_tile_microcache_misses ,
1900
- 100.0 * stats.find_tile_microcache_misses
1901
- / (double )stats.find_tile_calls );
1902
- print (out, " main cache misses : {} ({:.1f}%)\n " ,
1903
- stats.find_tile_cache_misses ,
1904
- 100.0 * stats.find_tile_cache_misses
1905
- / (double )stats.find_tile_calls );
1899
+ if (stats.find_tile_microcache_misses )
1900
+ print (out, " micro-cache misses : {} ({:.1f}%)\n " ,
1901
+ stats.find_tile_microcache_misses ,
1902
+ 100.0 * stats.find_tile_microcache_misses
1903
+ / (double )stats.find_tile_calls );
1904
+ if (stats.find_tile_cache_misses )
1905
+ print (out, " main cache misses : {} ({:.1f}%)\n " ,
1906
+ stats.find_tile_cache_misses ,
1907
+ 100.0 * stats.find_tile_cache_misses
1908
+ / (double )stats.find_tile_calls );
1906
1909
print (out, " redundant reads: {} tiles, {}\n " ,
1907
1910
total_redundant_tiles,
1908
1911
Strutil::memformat (total_redundant_bytes));
@@ -2011,11 +2014,13 @@ ImageCacheImpl::getstats(int level) const
2011
2014
nprinted, r, mb, file->iotime (),
2012
2015
onefile_stat_line (file, -1 , false ));
2013
2016
}
2014
- if (nprinted == 0 )
2017
+ if (nprinted == 0 ) {
2015
2018
print (out, " (nothing took more than 0.25s)\n " );
2016
- double fast = files.back ()->bytesread () / (1024.0 * 1024.0 )
2017
- / files.back ()->iotime ();
2018
- print (out, " (fastest was {:.1f} MB/s)\n " , fast);
2019
+ } else {
2020
+ double fast = files.back ()->bytesread () / (1024.0 * 1024.0 )
2021
+ / files.back ()->iotime ();
2022
+ print (out, " (fastest was {:.1f} MB/s)\n " , fast);
2023
+ }
2019
2024
if (total_redundant_tiles > 0 ) {
2020
2025
std::sort (files.begin (), files.end (), redundantbytes_compare);
2021
2026
print (out, " Top files by redundant I/O:\n " );
0 commit comments