source: cppstreams/test_fibonacci.cc

Last change on this file was 16, checked in by gobi, 13 years ago

fixing spaces, tabs

File size: 2.3 KB
Line 
1/*
2 * Copyright (c) 2011-2012, Attila Gobi
3 * All rights reserved.
4 *
5 * This software was developed by Attila Gobi.
6 * The project was supported by the European Union and co-financed by the
7 * European Social Fund (grant agreement no. TAMOP 4.2.1./B-09/1/KMR-2010-0003)
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions are met:
11 * 1. Redistributions of source code must retain the above copyright
12 *    notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 *    notice, this list of conditions and the following disclaimer in the
15 *    documentation and/or other materials provided with the distribution.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS "AS IS" AND ANY
18 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
23 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
24 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
25 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29#include "stream.h"
30#include "test_common.h"
31#include <sys/time.h>
32
33long timeval_diff(struct timeval &tv1, struct timeval &tv2)
34{
35    long ret = tv1.tv_usec - tv2.tv_usec;
36    if(ret<0) ret += 1000000;
37    return ret;
38}
39
40
41long fib(int n)
42{
43    long a=0,b=1;
44    for(int i=0; i<n; ++i) {
45        b+=a;
46        a=b-a;
47    }
48    return a;
49}
50
51
52int main()
53{
54  stream<long> s = 0l<<=s+(1l<<=s);
55
56  compare(s,  {0l,1l,1l,2l,3l,5l,8l,13l,21l,34l}, 1);
57
58  const int n = 200000;
59  struct timeval tv1, tv2;
60  struct timezone tz;
61
62  gettimeofday(&tv1, &tz);
63  stream<long>::iterator it = s.begin();
64  for(int i=0; i<n; ++i) ++it;
65  *it;
66  gettimeofday(&tv2, &tz);
67  std::cout<<timeval_diff(tv2, tv1)<<std::endl;
68
69  gettimeofday(&tv1, &tz);
70  fib(n);
71  gettimeofday(&tv2, &tz);
72  std::cout<<timeval_diff(tv2, tv1)<<std::endl;
73
74  return 0;
75}
Note: See TracBrowser for help on using the repository browser.