MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame^] | 1 | private 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}); |
| 2 | private 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}); |
| 3 | private 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}); |
| 4 | private 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}); |
| 5 | private int __level__; |
| 6 | private 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 | } |