1 /*
2  * Copyright (c) 2007 - 2015 Joseph Gaeddert
3  *
4  * Permission is hereby granted, free of charge, to any person obtaining a copy
5  * of this software and associated documentation files (the "Software"), to deal
6  * in the Software without restriction, including without limitation the rights
7  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8  * copies of the Software, and to permit persons to whom the Software is
9  * furnished to do so, subject to the following conditions:
10  *
11  * The above copyright notice and this permission notice shall be included in
12  * all copies or substantial portions of the Software.
13  *
14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20  * THE SOFTWARE.
21  */
22 
23 #include <sys/resource.h>
24 #include "liquid.h"
25 
26 //
benchmark_quantize_adc(struct rusage * _start,struct rusage * _finish,unsigned long int * _num_iterations)27 void benchmark_quantize_adc(struct rusage *     _start,
28                             struct rusage *     _finish,
29                             unsigned long int * _num_iterations)
30 {
31     unsigned long int i;
32 
33     unsigned int q = 0;
34     unsigned int num_bits=8;
35     float x=-0.1f;
36 
37     // start trials
38     getrusage(RUSAGE_SELF, _start);
39     for (i=0; i<(*_num_iterations); i++) {
40         q ^= quantize_adc(x,num_bits);
41         q ^= quantize_adc(x,num_bits);
42         q ^= quantize_adc(x,num_bits);
43         q ^= quantize_adc(x,num_bits);
44     }
45     getrusage(RUSAGE_SELF, _finish);
46     *_num_iterations *= 4;
47 }
48 
49 //
benchmark_quantize_dac(struct rusage * _start,struct rusage * _finish,unsigned long int * _num_iterations)50 void benchmark_quantize_dac(struct rusage *     _start,
51                             struct rusage *     _finish,
52                             unsigned long int * _num_iterations)
53 {
54     unsigned long int i;
55 
56     unsigned int q=0x0f;
57     unsigned int num_bits=8;
58     float x = 0;
59 
60     // start trials
61     getrusage(RUSAGE_SELF, _start);
62     for (i=0; i<(*_num_iterations); i++) {
63         x += quantize_dac(q,num_bits);
64         x += quantize_dac(q,num_bits);
65         x += quantize_dac(q,num_bits);
66         x += quantize_dac(q,num_bits);
67     }
68     getrusage(RUSAGE_SELF, _finish);
69     *_num_iterations *= 4;
70 }
71 
72