Пример #1
0
int fetch_audio_sample(audio_system* sys,double* vec) {
  int err;
#ifdef INT_FFT
  if((err = snd_pcm_readi(sys->handle, sys->buf, AUDIO_SAMPLE_COUNT)) != AUDIO_SAMPLE_COUNT) {
    return err;
  }
#else
#ifndef NATIVE_AUDIO_FORMAT_DOUBLE
  if((err = snd_pcm_readi(sys->handle, sys->buf, AUDIO_SAMPLE_COUNT)) != AUDIO_SAMPLE_COUNT) {
    return err;
  }
  audio_buffer_to_double(sys->buf,sys->dbuf,AUDIO_SAMPLE_COUNT*2);
#else
  if((err = snd_pcm_readi(sys->handle, sys->dbuf, AUDIO_SAMPLE_COUNT)) != AUDIO_SAMPLE_COUNT) {
    return err;
  }
#endif
#endif

  MEASURED("audio preprocessing",{
#ifdef INT_FFT
      kiss_fftr(sys->plan,sys->buf,sys->tbuf);
#else
      fftw_execute(sys->plan);
#endif
      calculate_statistics(sys->tbuf,AUDIO_SAMPLE_COUNT/2,&vec[0],&vec[1],&vec[2]);
      calculate_statistics(&(sys->tbuf[AUDIO_SAMPLE_COUNT/2+1]),AUDIO_SAMPLE_COUNT/2,&vec[3],&vec[4],&vec[5]);
      //calculate_statistics(sys->tbuf,AUDIO_SAMPLE_COUNT,&vec[0],&vec[1],&vec[2]);
    });
Пример #2
0
        bool print_column(const std::string& column,
            const std::string& unit,
            const tables::table& results)
        {
            if(!results.is_column<T>(column))
                return false;

            if(results.empty_rows(column) > 0)
                return false;

            auto values = results.values_as<T>(column);

            statistics res = calculate_statistics(
                values.cbegin(),
                values.cend());

            std::cout << console::textgreen << "[   RESULT ] "
                      << console::textdefault;

            std::cout   << column << " "
                        << std::endl
                        << console::textgreen << "[          ] "
                        << console::textdefault
                        << "   Average: " << res.m_mean
                        << " " << unit << std::endl;

            print("Max:", unit, res.m_max, res.m_mean);
            print("Min:", unit, res.m_min, res.m_mean);

            return true;

        }
Пример #3
0
        void benchmark_result(const benchmark &info,
            const tables::table &results)
        {
            std::vector<uint64_t> iterations =
                results.values_as<uint64_t>("iterations");

            statistics iter = calculate_statistics(
                iterations.cbegin(),
                iterations.cend());


            // Describe the beginning of the run.
            std::cout << std::fixed << console::textgreen << "[ RUN      ]"
                      << console::textdefault << " "
                      << info.testcase_name() << "."
                      << info.benchmark_name()
                      << " (" << results.rows()
                      << (results.rows() == 1 ? " run " : " runs ")
                      << "/ " << iter.m_mean << " "
                      << (iter.m_mean == 1 ? "iteration" : "iterations")
                      << ")" << std::endl;

            if(info.has_configurations())
            {
                std::cout << console::textyellow << "[  CONFIG  ]"
                          << console::textdefault << " ";
                const auto& c = info.get_current_configuration();
                bool first = true;
                tables::format f;
                for(const auto& v : c)
                {
                    if(!first)
                        std::cout << ",";
                    first = false;
                    std::cout << v.first << "=";

                    f.print(std::cout, v.second);
                }

                std::cout << std::endl;
            }

            double time = static_cast<double>(
                boost::chrono::duration_cast<boost::chrono::microseconds>(
                    m_benchmark_stop-m_benchmark_start).count());

            std::cout << std::fixed << console::textyellow << "[   TIME   ]"
                      << console::textdefault << " " << (time / 1000)
                      << " milliseconds" << std::endl;


            for(const auto& c_name : results.columns())
            {
                if(c_name == "iterations")
                    continue;
                if(c_name == "run_number")
                    continue;
                if(print_column<double>(c_name,info.unit_text(),results))
                    continue;
                if(print_column<float>(c_name,info.unit_text(),results))
                    continue;
                if(print_column<uint64_t>(c_name,info.unit_text(),results))
                    continue;
                if(print_column<int64_t>(c_name,info.unit_text(),results))
                    continue;
                if(print_column<int32_t>(c_name,info.unit_text(),results))
                    continue;
                if(print_column<uint32_t>(c_name,info.unit_text(),results))
                    continue;
                if(print_column<int16_t>(c_name,info.unit_text(),results))
                    continue;
                if(print_column<uint16_t>(c_name,info.unit_text(),results))
                    continue;
                if(print_column<int8_t>(c_name,info.unit_text(),results))
                    continue;
                if(print_column<uint8_t>(c_name,info.unit_text(),results))
                    continue;

            }

            std::cout << console::textgreen << "[----------] "
                      << console::textdefault << std::endl;
        }