from __future__ import absolute_import, print_function

import sys
sys.path.insert(0,'..')
import inline_tools

import time


def print_compare(n):
    print('Printing %d integers:' % n)
    t1 = time.time()
    for i in range(n):
        print(i, end=' ')
    t2 = time.time()
    py = (t2-t1)

    # get it in cache
    inline_tools.inline('printf("%d",i);',['i'])
    t1 = time.time()
    for i in range(n):
        inline_tools.inline('printf("%d",i);',['i'])
    t2 = time.time()
    print(' speed in python:', py)
    print(' speed in c:',(t2 - t1))
    print(' speed up: %3.2f' % (py/(t2-t1)))


def cout_example(lst):
    # get it in cache
    i = lst[0]
    inline_tools.inline('std::cout << i << std::endl;',['i'])
    t1 = time.time()
    for i in lst:
        inline_tools.inline('std::cout << i << std::endl;',['i'])
    t2 = time.time()

if __name__ == "__main__":
    n = 3000
    print_compare(n)
    print("calling cout with integers:")
    cout_example([1,2,3])
    print("calling cout with strings:")
    cout_example(['a','bb', 'ccc'])
