from pypy.interpreter.error import OperationError from pypy.interpreter.baseobjspace import ObjSpace, W_Root, Wrappable from pypy.interpreter.gateway import interp2app from pypy.interpreter.typedef import TypeDef, GetSetProperty from pypy.rpython.lltypesystem import rffi, lltype from pypy.rpython.tool import rffi_platform import sys, math time_t = rffi_platform.getsimpletype('time_t', '#include <time.h>', rffi.LONG) time = rffi.llexternal('time', [rffi.VOIDP], time_t, includes=['time.h']) def get(space, name): w_module = space.getbuiltinmodule('_demo') return space.getattr(w_module, space.wrap(name)) def measuretime(space, repetitions, w_callable): if repetitions <= 0: w_DemoError = get(space, 'DemoError') msg = "repetition count must be > 0" raise OperationError(w_DemoError, space.wrap(msg)) starttime = time(None) for i in range(repetitions): space.call_function(w_callable) endtime = time(None) return space.wrap(endtime - starttime) measuretime.unwrap_spec = [ObjSpace, int, W_Root] def sieve(space, n): lst = range(2, n + 1)
def test_simple_type(): ctype = rffi_platform.getsimpletype('test_t', 'typedef unsigned short test_t;', rffi.INT) assert ctype == rffi.USHORT
def test_simple_type(): ctype = rffi_platform.getsimpletype("test_t", "typedef unsigned short test_t;", rffi.INT) assert ctype == rffi.USHORT
from pypy.interpreter.error import OperationError from pypy.interpreter.baseobjspace import Wrappable from pypy.interpreter.gateway import interp2app, unwrap_spec from pypy.interpreter.typedef import TypeDef, GetSetProperty from pypy.rpython.lltypesystem import rffi, lltype from pypy.rpython.tool import rffi_platform from pypy.translator.tool.cbuild import ExternalCompilationInfo import sys, math time_t = rffi_platform.getsimpletype('time_t', '#include <time.h>', rffi.LONG) eci = ExternalCompilationInfo(includes=['time.h']) time = rffi.llexternal('time', [lltype.Signed], time_t, compilation_info=eci) def get(space, name): w_module = space.getbuiltinmodule('_demo') return space.getattr(w_module, space.wrap(name)) @unwrap_spec(repetitions=int) def measuretime(space, repetitions, w_callable): if repetitions <= 0: w_DemoError = get(space, 'DemoError') msg = "repetition count must be > 0" raise OperationError(w_DemoError, space.wrap(msg)) starttime = time(0) for i in range(repetitions): space.call_function(w_callable) endtime = time(0) return space.wrap(endtime - starttime)