X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=tools%2Fsfrtest.cc;h=96a8b44e2bc83806ba7fb0443e02bc6d40758669;hb=df4e6c4fccd320bf99823980520ee052f748605e;hp=8a1d71500781d386f9ba1fcf6c2a8fceed6d6008;hpb=f1a59e5373c844d34acbc1c7eabbc75b23a77e54;p=ardour.git diff --git a/tools/sfrtest.cc b/tools/sfrtest.cc index 8a1d715007..96a8b44e2b 100644 --- a/tools/sfrtest.cc +++ b/tools/sfrtest.cc @@ -21,8 +21,6 @@ using namespace std; SF_INFO format_info; float* data = 0; -bool with_sync = false; - int read_one (SNDFILE* sf, uint32_t nframes) { @@ -47,15 +45,14 @@ int main (int argc, char* argv[]) { vector sndfiles; - uint32_t sample_size; - char optstring[] = "n:b:s"; + uint32_t sample_size = sizeof (float); + char optstring[] = "n:b:sD"; uint32_t block_size = 64 * 1024; uint32_t nfiles = 100; bool direct = false; const struct option longopts[] = { { "nfiles", 1, 0, 'n' }, { "blocksize", 1, 0, 'b' }, - { "sync", 0, 0, 's' }, { "direct", 0, 0, 'D' }, { 0, 0, 0, 0 } }; @@ -64,7 +61,7 @@ main (int argc, char* argv[]) int c = 0; char const * name_template = 0; int samplerate; - + while (1) { if ((c = getopt_long (argc, argv, optstring, longopts, &option_index)) == -1) { break; @@ -77,9 +74,6 @@ main (int argc, char* argv[]) case 'b': block_size = atoi (optarg); break; - case 's': - with_sync = true; - break; case 'D': direct = true; break; @@ -95,7 +89,7 @@ main (int argc, char* argv[]) usage (); return 1; } - + for (uint32_t n = 1; n <= nfiles; ++n) { SNDFILE* sf; char path[PATH_MAX+1]; @@ -105,7 +99,7 @@ main (int argc, char* argv[]) if (!Glib::file_test (path, Glib::FILE_TEST_EXISTS|Glib::FILE_TEST_IS_REGULAR)) { break; } - + int flags = O_RDONLY; int fd = open (path, flags, 0644); @@ -132,15 +126,15 @@ main (int argc, char* argv[]) } samplerate = format_info.samplerate; - + sndfiles.push_back (sf); } - cout << "Discovered " << nfiles+1 << " files using " << name_template << endl; - + cout << "Discovered " << sndfiles.size() << " files using " << name_template << endl; + data = new float[block_size]; uint64_t read = 0; - + while (true) { gint64 before; before = g_get_monotonic_time(); @@ -152,16 +146,12 @@ main (int argc, char* argv[]) } read += block_size; gint64 elapsed = g_get_monotonic_time() - before; - double bandwidth = (sndfiles.size() * block_size * sample_size) / (elapsed/1000000.0); - double data_minutes = read / (double) (60.0 * 48000.0); - const double data_rate = sndfiles.size() * sample_size * samplerate; - stringstream ds; - ds << setprecision (1) << data_minutes; - - cout << "BW @ " << read << " frames (" << ds.str() << " minutes) = " << (bandwidth/1048576.0) << " MB/sec " << bandwidth / data_rate << " x faster than necessary " << endl; + double bandwidth = ((sndfiles.size() * block_size * sample_size)/1048576.0) / (elapsed/1000000.0); + + printf ("BW @ %Lu %.3f seconds bandwidth %.4f MB/sec\n", read, elapsed/1000000.0, bandwidth); } return 0; } - +