blob: 05dcebfad614aae5dfce868d947cef73167f4a61 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001private mixed __tm__=({0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0});
2private mixed __xtm__=({0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0});
3private mixed __ec__=({0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0});
4private mixed __xec__=({0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0});
5private int __level__;
6private mapping __data__ = ([]);
7__query_xprof_data__() { return __data__; }
8#define U2T(ru) (((ru)[0]+(ru)[1])*10)
9#define EC1 40
10#define EC2 22
11#define EC3 150
12#define TM1 0
13#define TM2 0
14#define TM3 0
15#define F(func,name,args) func args { \
16 mixed *__dt__, *__ru__, __re__; \
17 int __t__; \
18 if(!__data__) return :: func args; \
19 __ru__=rusage(); \
20 __tm__[__level__]=(__t__=U2T(__ru__))<0?0:__t__; \
21 __xtm__[__level__]=TM1; __tm__[__level__+1]=0; \
22 __ec__[__level__]=get_eval_cost(); \
23 __xec__[__level__]=EC1; __ec__[__level__+1]=0; \
24 __level__++; __re__ = :: func args; __level__--; \
25 if(!(__dt__=__data__[name])) { \
26 __dt__=__data__[name]=({0,0,0,0,0}); \
27 __xtm__[__level__]+=TM2; __xec__[__level__]+=EC2; \
28 } \
29 __ec__[__level__]-=get_eval_cost()+__xec__[__level__]; \
30 __ru__=rusage(); \
31 __t__=(__t__=U2T(__ru__))<0?0:__t__; \
32 __tm__[__level__]=__t__-__tm__[__level__]-__xtm__[__level__]; \
33 __dt__[0]++; \
34 __dt__[1]+=__ec__[__level__]-__ec__[__level__+1]; \
35 __dt__[2]+=__tm__[__level__]-__tm__[__level__+1]; \
36 __dt__[3]+=__ec__[__level__]; __dt__[4]+=__tm__[__level__]; \
37 if(__level__>0) { \
38 __xec__[__level__-1]+=__xec__[__level__]+EC3; \
39 __xtm__[__level__-1]+=__xtm__[__level__]+TM3; \
40 } \
41 return __re__; \
42}