Message 14443

Author
giedrius
Date
2013-10-27.15:02:45
Message id
14443

Content

Normally, trytond tries to validate every field it finds on written model. It
doesn't harm a lot if model is tiny, but when the model grows by adding more and
more fields (with domain, state attributes) slowness becomes noticeable.

This issue is fixed in review1371002.

I've attached a script used to test the performance. It installs many modules to
reflect real usage performance. I got more than 100% performance increase, but
like i said, it depends on model size and written fields.

Here's numbers I got. Firstly, a test without patch:

         33665 function calls (30058 primitive calls) in 0.235 seconds

   Ordered by: standard name

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        2    0.000    0.000    0.000    0.000 :0(__getitem__)
        1    0.000    0.000    0.000    0.000 :0(__import__)
       26    0.000    0.000    0.000    0.000 :0(__new__)
        1    0.000    0.000    0.000    0.000 :0(abs)
        4    0.000    0.000    0.000    0.000 :0(add)
       60    0.000    0.000    0.002    0.000 :0(all)
       11    0.000    0.000    0.000    0.000 :0(any)
      540    0.000    0.000    0.000    0.000 :0(append)
        2    0.000    0.000    0.000    0.000 :0(clear)
      186    0.000    0.000    0.000    0.000 :0(copy)
       21    0.000    0.000    0.000    0.000 :0(decode)
       16    0.000    0.000    0.000    0.000 :0(end)
        1    0.000    0.000    0.000    0.000 :0(endswith)
       31    0.006    0.000    0.009    0.000 :0(execute)
     1049    0.005    0.000    0.005    0.000 :0(extend)
       18    0.000    0.000    0.000    0.000 :0(fetchall)
        9    0.000    0.000    0.000    0.000 :0(fetchmany)
        3    0.000    0.000    0.000    0.000 :0(fetchone)
       21    0.000    0.000    0.000    0.000 :0(format)
       17    0.000    0.000    0.000    0.000 :0(fromkeys)
      988    0.003    0.000    0.003    0.000 :0(get)
      239    0.000    0.000    0.000    0.000 :0(get_ident)
 1443/898    0.005    0.000    0.092    0.000 :0(getattr)
       14    0.000    0.000    0.000    0.000 :0(globals)
       19    0.000    0.000    0.000    0.000 :0(group)
     1101    0.008    0.000    0.010    0.000 :0(hasattr)
       23    0.000    0.000    0.000    0.000 :0(index)
     3205    0.009    0.000    0.012    0.000 :0(isinstance)
        1    0.000    0.000    0.000    0.000 :0(isoformat)
      191    0.001    0.000    0.001    0.000 :0(items)
      370    0.000    0.000    0.000    0.000 :0(iteritems)
        1    0.000    0.000    0.000    0.000 :0(itervalues)
  186/185    0.000    0.000    0.000    0.000 :0(join)
      105    0.003    0.000    0.003    0.000 :0(keys)
     1116    0.001    0.000    0.001    0.000 :0(len)
       30    0.000    0.000    0.000    0.000 :0(lower)
  243/190    0.001    0.000    0.029    0.000 :0(map)
       26    0.001    0.000    0.001    0.000 :0(match)
       27    0.001    0.000    0.001    0.000 :0(max)
        1    0.000    0.000    0.000    0.000 :0(min)
        6    0.000    0.000    0.000    0.000 :0(mktime)
        1    0.000    0.000    0.000    0.000 :0(now)
        1    0.001    0.001    0.001    0.001 :0(open)
      338    0.000    0.000    0.000    0.000 :0(pop)
       48    0.002    0.000    0.002    0.000 :0(range)
        1    0.000    0.000    0.000    0.000 :0(readlines)
       93    0.000    0.000    0.000    0.000 :0(remove)
       82    0.000    0.000    0.000    0.000 :0(repr)
        2    0.000    0.000    0.000    0.000 :0(round)
        4    0.000    0.000    0.000    0.000 :0(rstrip)
      155    0.000    0.000    0.000    0.000 :0(setattr)
      217    0.002    0.000    0.002    0.000 :0(setdefault)
        1    0.000    0.000    0.000    0.000 :0(setprofile)
       19    0.000    0.000    0.000    0.000 :0(sort)
      139    0.000    0.000    0.000    0.000 :0(split)
       10    0.000    0.000    0.000    0.000 :0(startswith)
        1    0.000    0.000    0.000    0.000 :0(stat)
        6    0.000    0.000    0.000    0.000 :0(strip)
        6    0.000    0.000    0.000    0.000 :0(timetuple)
        8    0.000    0.000    0.000    0.000 :0(today)
      153    0.001    0.000    0.028    0.000 :0(update)
       20    0.000    0.000    0.000    0.000 :0(upper)
       23    0.000    0.000    0.000    0.000 :0(values)
       26    0.000    0.000    0.001    0.000 :0(warn)
        2    0.000    0.000    0.000    0.000 :0(write)
        2    0.000    0.000    0.000    0.000 :0(zip)
        1    0.000    0.000    0.235    0.235 <string>:1(<module>)
       19    0.000    0.000    0.000    0.000 <string>:8(__new__)
        1    0.000    0.000    0.000    0.000 __init__.py:10(get)
        9    0.000    0.000    0.001    0.000 __init__.py:1002(params)
       14    0.000    0.000    0.000    0.000 __init__.py:1014(__init__)
       14    0.000    0.000    0.001    0.000 __init__.py:1019(__str__)
       14    0.000    0.000    0.001    0.000 __init__.py:1022(params)
       29    0.000    0.000    0.000    0.000 __init__.py:119(__enter__)
       29    0.000    0.000    0.000    0.000 __init__.py:126(__exit__)
      444    0.001    0.000    0.005    0.000 __init__.py:132(get)
        1    0.000    0.000    0.000    0.000 __init__.py:138(set)
       31    0.001    0.000    0.002    0.000 __init__.py:143(alias_factory)
       84    0.000    0.000    0.054    0.001 __init__.py:156(__iter__)
      444    0.002    0.000    0.007    0.000 __init__.py:164(alias)
      135    0.000    0.000    0.002    0.000 __init__.py:168(__getattr__)
       28    0.000    0.000    0.003    0.000 __init__.py:175(select)
        6    0.000    0.000    0.001    0.000 __init__.py:178(join)
       28    0.000    0.000    0.000    0.000 __init__.py:185(__init__)
       74    0.000    0.000    0.000    0.000 __init__.py:194(order_by)
       28    0.000    0.000    0.000    0.000 __init__.py:198(order_by)
       24    0.000    0.000    0.000    0.000 __init__.py:203(<genexpr>)
       28    0.000    0.000    0.001    0.000 __init__.py:206(_order_by_str)
       30    0.000    0.000    0.000    0.000 __init__.py:213(limit)
       28    0.000    0.000    0.000    0.000 __init__.py:217(limit)
       28    0.000    0.000    0.000    0.000 __init__.py:223(_limit_str)
       54    0.000    0.000    0.000    0.000 __init__.py:234(offset)
       28    0.000    0.000    0.000    0.000 __init__.py:238(offset)
       28    0.000    0.000    0.000    0.000 __init__.py:244(_offset_str)
       28    0.000    0.000    0.003    0.000 __init__.py:256(__init__)
       84    0.000    0.000    0.000    0.000 __init__.py:272(columns)
       28    0.000    0.000    0.002    0.000 __init__.py:276(columns)
      310    0.002    0.000    0.002    0.000 __init__.py:278(<genexpr>)
      112    0.000    0.000    0.000    0.000 __init__.py:281(where)
       28    0.000    0.000    0.000    0.000 __init__.py:285(where)
       56    0.000    0.000    0.000    0.000 __init__.py:292(group_by)
       28    0.000    0.000    0.000    0.000 __init__.py:296(group_by)
       56    0.000    0.000    0.000    0.000 __init__.py:304(having)
       28    0.001    0.000    0.001    0.000 __init__.py:308(having)
       28    0.000    0.000    0.000    0.000 __init__.py:315(for_)
       28    0.000    0.000    0.000    0.000 __init__.py:319(for_)
      282    0.005    0.000    0.014    0.000 __init__.py:327(_format_column)
    28/27    0.002    0.000    0.031    0.001 __init__.py:334(__str__)
    28/27    0.003    0.000    0.022    0.001 __init__.py:357(params)
        1    0.000    0.000    0.001    0.001 __init__.py:390(__init__)
        7    0.000    0.000    0.000    0.000 __init__.py:400(table)
        1    0.001    0.001    0.001    0.001 __init__.py:404(table)
        2    0.000    0.000    0.000    0.000 __init__.py:409(columns)
       31    0.000    0.000    0.001    0.000 __init__.py:41(alias)
        1    0.000    0.000    0.000    0.000 __init__.py:413(columns)
        4    0.000    0.000    0.000    0.000 __init__.py:416(<genexpr>)
        4    0.000    0.000    0.000    0.000 __init__.py:417(<genexpr>)
        1    0.000    0.000    0.000    0.000 __init__.py:434(returning)
        3    0.000    0.000    0.000    0.000 __init__.py:440(_format)
        1    0.000    0.000    0.001    0.001 __init__.py:491(__init__)
        2    0.000    0.000    0.000    0.000 __init__.py:497(values)
        1    0.000    0.000    0.000    0.000 __init__.py:501(values)
        4    0.000    0.000    0.000    0.000 __init__.py:508(where)
        1    0.000    0.000    0.000    0.000 __init__.py:512(where)
        1    0.000    0.000    0.000    0.000 __init__.py:519(__str__)
        4    0.000    0.000    0.000    0.000 __init__.py:520(<genexpr>)
        4    0.000    0.000    0.000    0.000 __init__.py:532(<genexpr>)
        1    0.000    0.000    0.001    0.001 __init__.py:539(params)
       41    0.000    0.000    0.000    0.000 __init__.py:658(__init__)
       33    0.000    0.000    0.000    0.000 __init__.py:662(__str__)
       37    0.000    0.000    0.000    0.000 __init__.py:665(params)
        1    0.000    0.000    0.001    0.001 __init__.py:673(update)
        6    0.000    0.000    0.001    0.000 __init__.py:685(__init__)
        6    0.000    0.000    0.000    0.000 __init__.py:695(left)
        6    0.001    0.000    0.001    0.000 __init__.py:699(left)
        9    0.000    0.000    0.000    0.000 __init__.py:704(right)
        6    0.000    0.000    0.000    0.000 __init__.py:708(right)
       15    0.000    0.000    0.000    0.000 __init__.py:713(condition)
        6    0.000    0.000    0.000    0.000 __init__.py:717(condition)
        3    0.000    0.000    0.000    0.000 __init__.py:724(type_)
        6    0.000    0.000    0.000    0.000 __init__.py:728(type_)
        3    0.000    0.000    0.000    0.000 __init__.py:735(__str__)
       12    0.001    0.000    0.001    0.000 __init__.py:74(__init__)
        3    0.000    0.000    0.004    0.001 __init__.py:744(params)
        3    0.000    0.000    0.000    0.000 __init__.py:754(alias)
        3    0.000    0.000    0.000    0.000 __init__.py:758(__getattr__)
        3    0.000    0.000    0.001    0.000 __init__.py:761(select)
       28    0.000    0.000    0.003    0.000 __init__.py:768(select)
    34/28    0.000    0.000    0.004    0.000 __init__.py:771(__str__)
    34/28    0.001    0.000    0.004    0.000 __init__.py:772(format)
       28    0.000    0.000    0.004    0.000 __init__.py:783(params)
      201    0.000    0.000    0.000    0.000 __init__.py:81(param)
       50    0.002    0.000    0.002    0.000 __init__.py:873(__eq__)
       14    0.000    0.000    0.000    0.000 __init__.py:880(__ne__)
       20    0.000    0.000    0.000    0.000 __init__.py:892(in_)
      271    0.001    0.000    0.002    0.000 __init__.py:904(as_)
        9    0.000    0.000    0.000    0.000 __init__.py:907(cast)
        1    0.000    0.000    0.000    0.000 __init__.py:922(__init__)
      239    0.001    0.000    0.003    0.000 __init__.py:93(get)
        1    0.000    0.000    0.000    0.000 __init__.py:930(__str__)
        1    0.000    0.000    0.000    0.000 __init__.py:933(params)
      413    0.003    0.000    0.003    0.000 __init__.py:941(__init__)
        6    0.000    0.000    0.000    0.000 __init__.py:946(table)
      413    0.002    0.000    0.006    0.000 __init__.py:954(__str__)
      428    0.002    0.000    0.002    0.000 __init__.py:966(params)
      271    0.001    0.000    0.001    0.000 __init__.py:974(__init__)
      271    0.002    0.000    0.002    0.000 __init__.py:979(__str__)
      271    0.000    0.000    0.000    0.000 __init__.py:982(params)
        9    0.000    0.000    0.000    0.000 __init__.py:990(__init__)
        9    0.000    0.000    0.002    0.000 __init__.py:995(__str__)
      191    0.003    0.000    0.011    0.000 _abcoll.py:526(update)
      573    0.001    0.000    0.001    0.000 _weakrefset.py:68(__contains__)
      191    0.002    0.000    0.003    0.000 abc.py:128(__instancecheck__)
      191    0.000    0.000    0.000    0.000 abc.py:148(__subclasscheck__)
        1    0.000    0.000    0.000    0.000 boolean.py:26(_domain_add_null)
     14/8    0.000    0.000    0.000    0.000 cache.py:13(freeze)
      191    0.002    0.000    0.017    0.000 cache.py:135(__init__)
       75    0.002    0.000    0.003    0.000 cache.py:141(__setitem__)
       13    0.000    0.000    0.000    0.000 cache.py:149(setdefault)
      279    0.003    0.000    0.003    0.000 cache.py:154(_check_size_limit)
       14    0.000    0.000    0.000    0.000 cache.py:17(<genexpr>)
       29    0.000    0.000    0.000    0.000 cache.py:39(_key)
       21    0.000    0.000    0.002    0.000 cache.py:44(get)
        8    0.000    0.000    0.001    0.000 cache.py:56(set)
        9    0.001    0.000    0.002    0.000 char.py:20(__init__)
        9    0.000    0.000    0.000    0.000 char.py:44(_set_autocomplete)
        9    0.000    0.000    0.000    0.000 char.py:50(_get_size)
        9    0.000    0.000    0.000    0.000 char.py:53(_set_size)
        7    0.000    0.000    0.000    0.000 char.py:59(sql_format)
        9    0.000    0.000    0.000    0.000 char.py:70(sql_type)
        9    0.000    0.000    0.000    0.000 char.py:9(autocomplete_validate)
       21    0.000    0.000    0.000    0.000 collections.py:132(pop)
       13    0.000    0.000    0.000    0.000 collections.py:146(setdefault)
      191    0.002    0.000    0.013    0.000 collections.py:38(__init__)
       75    0.000    0.000    0.000    0.000 collections.py:54(__setitem__)
       13    0.000    0.000    0.000    0.000 collections.py:64(__delitem__)
        1    0.000    0.000    0.000    0.000 collections.py:91(clear)
    30/24    0.000    0.000    0.000    0.000 conditionals.py:40(_format)
       15    0.000    0.000    0.000    0.000 conditionals.py:89(__init__)
    15/12    0.001    0.000    0.001    0.000 conditionals.py:92(__str__)
    15/12    0.000    0.000    0.002    0.000 conditionals.py:96(params)
       16    0.000    0.000    0.000    0.000 config.py:146(__getitem__)
        7    0.000    0.000    0.008    0.001 configuration.py:20(get_language)
       26    0.000    0.000    0.000    0.000 contextlib.py:12(__init__)
       26    0.000    0.000    0.003    0.000 contextlib.py:15(__enter__)
       26    0.000    0.000    0.001    0.000 contextlib.py:21(__exit__)
       26    0.000    0.000    0.000    0.000 contextlib.py:82(helper)
       52    0.001    0.000    0.004    0.000 contextlib.py:88(nested)
       82    0.004    0.000    0.010    0.000 database.py:110(get_cache)
        1    0.000    0.000    0.000    0.000 database.py:115(now)
       33    0.002    0.000    0.004    0.000 database.py:305(__build_dict)
      354    0.002    0.000    0.002    0.000 database.py:306(<genexpr>)
        9    0.000    0.000    0.002    0.000 database.py:316(dictfetchmany)
       15    0.001    0.000    0.003    0.000 database.py:320(dictfetchall)
       31    0.000    0.000    0.000    0.000 database.py:335(__getattr__)
       13    0.001    0.000    0.001    0.000 database.py:34(extract)
       31    0.000    0.000    0.009    0.000 database.py:340(execute)
        1    0.000    0.000    0.000    0.000 database.py:387(has_constraint)
        3    0.000    0.000    0.001    0.000 database.py:390(<lambda>)
        1    0.000    0.000    0.000    0.000 database.py:392(<lambda>)
       21    0.001    0.000    0.001    0.000 dbapi2.py:64(convert_timestamp)
        1    0.000    0.000    0.000    0.000 decimal.py:1640(_fix)
        1    0.000    0.000    0.000    0.000 decimal.py:2422(quantize)
        1    0.000    0.000    0.000    0.000 decimal.py:3724(_dec_from_triple)
        1    0.000    0.000    0.000    0.000 decimal.py:3782(__init__)
        2    0.000    0.000    0.000    0.000 decimal.py:3895(Etiny)
        1    0.000    0.000    0.000    0.000 decimal.py:3899(Etop)
        1    0.000    0.000    0.000    0.000 decimal.py:441(getcontext)
        6    0.001    0.000    0.001    0.000 decimal.py:515(__new__)
        2    0.000    0.000    0.000    0.000 decimal.py:5835(_convert_other)
        2    0.000    0.000    0.000    0.000 decimal.py:700(_isnan)
        1    0.000    0.000    0.000    0.000 decimal.py:728(_check_nans)
        4    0.000    0.000    0.000    0.000 decimal.py:793(__nonzero__)
        1    0.000    0.000    0.000    0.000 decimal.py:800(_cmp)
        1    0.000    0.000    0.000    0.000 decimal.py:872(__ne__)
        1    0.000    0.000    0.000    0.000 decimal.py:999(__str__)
        8    0.000    0.000    0.000    0.000 decoder.py:303(__init__)
        8    0.001    0.000    0.071    0.009 decoder.py:360(decode)
        8    0.000    0.000    0.069    0.009 decoder.py:371(raw_decode)
        8    0.001    0.000    0.001    0.000 encoder.py:101(__init__)
        8    0.000    0.000    0.000    0.000 encoder.py:186(encode)
        8    0.000    0.000    0.000    0.000 encoder.py:212(iterencode)
        9    0.000    0.000    0.000    0.000 field.py:14(domain_validate)
       27    0.000    0.000    0.000    0.000 field.py:144(_get_domain)
        9    0.000    0.000    0.000    0.000 field.py:147(_set_domain)
       39    0.000    0.000    0.000    0.000 field.py:153(_get_states)
        9    0.000    0.000    0.000    0.000 field.py:156(_set_states)
        9    0.000    0.000    0.000    0.000 field.py:165(_set_on_change)
        9    0.000    0.000    0.000    0.000 field.py:17(test_domain)
        9    0.000    0.000    0.000    0.000 field.py:173(_set_on_change_with)
        9    0.000    0.000    0.000    0.000 field.py:182(_set_depends)
        9    0.000    0.000    0.000    0.000 field.py:191(_set_context)
 1334/104    0.013    0.000    0.168    0.002 field.py:197(__get__)
        1    0.000    0.000    0.000    0.000 field.py:203(__set__)
       14    0.000    0.000    0.000    0.000 field.py:209(sql_format)
       14    0.000    0.000    0.000    0.000 field.py:216(_domain_value)
       14    0.000    0.000    0.000    0.000 field.py:224(_domain_add_null)
       28    0.000    0.000    0.000    0.000 field.py:227(<genexpr>)
       14    0.000    0.000    0.000    0.000 field.py:234(convert_domain)
       11    0.000    0.000    0.000    0.000 field.py:248(convert_order)
        3    0.000    0.000    0.002    0.001 field.py:260(__get_translation_join)
        2    0.000    0.000    0.000    0.000 field.py:292(convert_domain)
        5    0.000    0.000    0.002    0.000 field.py:317(convert_order)
        9    0.000    0.000    0.000    0.000 field.py:36(states_validate)
        9    0.000    0.000    0.000    0.000 field.py:48(on_change_validate)
        9    0.000    0.000    0.000    0.000 field.py:53(on_change_with_validate)
        9    0.000    0.000    0.000    0.000 field.py:58(depends_validate)
        9    0.000    0.000    0.000    0.000 field.py:62(context_validate)
        9    0.000    0.000    0.000    0.000 field.py:66(size_validate)
        9    0.001    0.000    0.001    0.000 field.py:92(__init__)
       22    0.000    0.000    0.000    0.000 float.py:44(_get_digits)
      173    0.001    0.000    0.002    0.000 function.py:49(__getattr__)
        1    0.000    0.000    0.000    0.000 function.py:62(convert_domain)
      5/4    0.000    0.000    0.081    0.020 function.py:68(get)
      5/4    0.000    0.000    0.079    0.020 function.py:76(call)
     10/8    0.000    0.000    0.077    0.010 function.py:81(<genexpr>)
     10/8    0.002    0.000    0.081    0.010 function.py:87(<genexpr>)
       28    0.000    0.000    0.000    0.000 functions.py:55(__init__)
       18    0.000    0.000    0.002    0.000 functions.py:58(_format)
       10    0.000    0.000    0.002    0.000 functions.py:65(__str__)
    19/10    0.000    0.000    0.001    0.000 functions.py:72(params)
        9    0.000    0.000    0.002    0.000 functions.py:91(__str__)
        5    0.000    0.000    0.000    0.000 inspect.py:142(isfunction)
        5    0.000    0.000    0.000    0.000 inspect.py:209(iscode)
        5    0.000    0.000    0.000    0.000 inspect.py:67(ismethod)
        5    0.000    0.000    0.000    0.000 inspect.py:743(getargs)
        5    0.000    0.000    0.000    0.000 inspect.py:803(getargspec)
        6    0.000    0.000    0.000    0.000 integer.py:24(sql_format)
        2    0.000    0.000    0.001    0.001 linecache.py:13(getline)
        2    0.000    0.000    0.001    0.001 linecache.py:33(getlines)
        1    0.000    0.000    0.001    0.001 linecache.py:68(updatecache)
        2    0.000    0.000    0.001    0.001 many2one.py:132(convert_domain)
       11    0.000    0.000    0.000    0.000 many2one.py:56(__get_required)
       48    0.000    0.000    0.002    0.000 many2one.py:66(get_target)
        1    0.000    0.000    0.000    0.000 many2one.py:79(sql_format)
       19    0.001    0.000    0.002    0.000 misc.py:327(reduce_ids)
       19    0.000    0.000    0.000    0.000 misc.py:333(<genexpr>)
    20/10    0.001    0.000    0.001    0.000 misc.py:416(reduce_domain)
        1    0.000    0.000    0.000    0.000 model.py:354(pre_validate)
       73    0.002    0.000    0.003    0.000 model.py:357(__init__)
     1329    0.004    0.000    0.004    0.000 model.py:378(__getattr__)
  514/513    0.003    0.000    0.003    0.000 model.py:386(__setattr__)
        6    0.000    0.000    0.000    0.000 model.py:400(__int__)
        1    0.000    0.000    0.000    0.000 model.py:403(__str__)
       20    0.000    0.000    0.000    0.000 model.py:443(__nonzero__)
       21    0.000    0.000    0.000    0.000 model.py:513(check)
       35    0.001    0.000    0.003    0.000 model.py:658(check)
      390    0.001    0.000    0.001    0.000 model.py:668(<genexpr>)
        1    0.000    0.000    0.004    0.004 modelsingleton.py:11(get_singleton)
        1    0.000    0.000    0.006    0.006 modelsingleton.py:29(read)
     10/9    0.001    0.000    0.004    0.000 modelsql.py:1005(search_domain)
       27    0.001    0.000    0.001    0.000 modelsql.py:1020(is_leaf)
     27/9    0.001    0.000    0.003    0.000 modelsql.py:1026(convert)
    26/21    0.000    0.000    0.001    0.000 modelsql.py:1039(<genexpr>)
        1    0.000    0.000    0.000    0.000 modelsql.py:1050(_update_mptt)
        1    0.000    0.000    0.001    0.001 modelsql.py:1159(validate)
       71    0.000    0.000    0.000    0.000 modelsql.py:185(table_query)
        1    0.000    0.000    0.000    0.000 modelsql.py:230(__insert_history)
        1    0.000    0.000    0.000    0.000 modelsql.py:265(__check_timestamp)
    20/11    0.006    0.000    0.130    0.012 modelsql.py:406(read)
       41    0.000    0.000    0.000    0.000 modelsql.py:49(__table__)
        1    0.000    0.000    0.191    0.191 modelsql.py:631(write)
     10/9    0.004    0.000    0.052    0.006 modelsql.py:861(search)
       28    0.000    0.000    0.000    0.000 modelsql.py:885(<genexpr>)
    13/10    0.000    0.000    0.000    0.000 modelsql.py:894(convert_from)
        4    0.000    0.000    0.000    0.000 modelstorage.py:1046(digits_test)
       20    0.001    0.000    0.002    0.000 modelstorage.py:112(read)
       73    0.003    0.000    0.017    0.000 modelstorage.py:1164(__init__)
      564    0.002    0.000    0.003    0.000 modelstorage.py:1185(_cache)
  1329/98    0.023    0.000    0.166    0.002 modelstorage.py:1192(__getattr__)
       14    0.000    0.000    0.000    0.000 modelstorage.py:1229(<genexpr>)
      376    0.006    0.000    0.025    0.000 modelstorage.py:1234(not_cached)
      318    0.000    0.000    0.002    0.000 modelstorage.py:1239(to_load)
       25    0.000    0.000    0.000    0.000 modelstorage.py:1260(filter_)
       75    0.002    0.000    0.023    0.000 modelstorage.py:1268(instantiate)
        1    0.000    0.000    0.001    0.001 modelstorage.py:128(write)
        1    0.000    0.000    0.000    0.000 modelstorage.py:1346(_save_values)
        1    0.000    0.000    0.235    0.235 modelstorage.py:1377(save)
        8    0.000    0.000    0.000    0.000 modelstorage.py:1401(__init__)
        9    0.000    0.000    0.069    0.008 modelstorage.py:1406(__getitem__)
        9    0.000    0.000    0.069    0.008 modelstorage.py:1430(get)
        8    0.000    0.000    0.000    0.000 modelstorage.py:1437(__nonzero__)
        1    0.000    0.000    0.000    0.000
modelstorage.py:160(trigger_write_get_eligibles)
        1    0.000    0.000    0.000    0.000 modelstorage.py:177(trigger_write)
       10    0.000    0.000    0.001    0.000
modelstorage.py:373(_search_domain_active)
       17    0.000    0.000    0.009    0.001 modelstorage.py:440(browse)
        1    0.000    0.000    0.000    0.000 modelstorage.py:782(check_xml_record)
        1    0.000    0.000    0.000    0.000 modelstorage.py:878(validate)
        1    0.004    0.004    0.185    0.185 modelstorage.py:882(_validate)
    24/14    0.002    0.000    0.002    0.000 modelstorage.py:910(is_pyson)
        9    0.000    0.000    0.000    0.000 modelstorage.py:995(required_test)
        1    0.000    0.000    0.002    0.002
move.py:367(on_change_with_unit_digits)
        1    0.000    0.000    0.029    0.029
move.py:400(on_change_with_product_uom_category)
        1    0.000    0.000    0.031    0.031
move.py:424(on_change_with_unit_price_required)
        1    0.000    0.000    0.000    0.000 move.py:437(_get_shipment)
        1    0.000    0.000    0.026    0.026 move.py:448(get_shipment)
        1    0.000    0.000    0.000    0.000 move.py:457(_get_origin)
        1    0.000    0.000    0.020    0.020 move.py:462(get_origin)
        1    0.000    0.000    0.001    0.001 move.py:475(check_period_closed)
        1    0.000    0.000    0.031    0.031 move.py:561(_get_internal_quantity)
        1    0.000    0.000    0.234    0.234 move.py:650(write)
        2    0.000    0.000    0.000    0.000 move.py:663(<genexpr>)
        1    0.000    0.000    0.000    0.000 numeric.py:17(sql_format)
       98    0.000    0.000    0.000    0.000 operators.py:122(__init__)
      107    0.000    0.000    0.000    0.000 operators.py:126(_operands)
    92/90    0.000    0.000    0.009    0.000 operators.py:130(__str__)
       63    0.001    0.000    0.001    0.000 operators.py:142(_operands)
    51/33    0.000    0.000    0.009    0.000 operators.py:146(__str__)
       83    0.000    0.000    0.000    0.000 operators.py:199(_operands)
       52    0.000    0.000    0.004    0.000 operators.py:207(__str__)
       16    0.000    0.000    0.002    0.000 operators.py:219(__str__)
   177/36    0.001    0.000    0.015    0.000 operators.py:55(params)
   187/36    0.009    0.000    0.014    0.000 operators.py:58(convert)
  202/180    0.003    0.000    0.009    0.000 operators.py:72(_format)
       28    0.000    0.000    0.000    0.000 operators.py:80(<genexpr>)
       12    0.000    0.000    0.000    0.000 operators.py:90(__and__)
      196    0.001    0.000    0.001    0.000 pool.py:155(get)
        1    0.000    0.000    0.000    0.000 pool.py:186(object_name_list)
      139    0.001    0.000    0.001    0.000 pool.py:51(__new__)
      139    0.003    0.000    0.003    0.000 pool.py:65(__init__)
        1    0.000    0.000    0.017    0.017
product.py:107(on_change_with_default_uom_category)
    111/5    0.001    0.000    0.046    0.009 product.py:157(__getattr__)
        1    0.000    0.000    0.015    0.015 product.py:179(get_default_uom)
        1    0.000    0.000    0.000    0.000 product.py:190(search_type)
        1    0.000    0.000    0.002    0.002 product.py:209(search_domain)
      3/1    0.000    0.000    0.000    0.000 product.py:211(convert_domain)
        0    0.000             0.000          profile:0(profiler)
        1    0.000    0.000    0.235    0.235 profile:0(write_move(move, 1))
        8    0.000    0.000    0.000    0.000 pyson.py:100(__init__)
       16    0.000    0.000    0.069    0.004 pyson.py:104(_object_hook)
        9    0.000    0.000    0.000    0.000 pyson.py:119(pyson)
        9    0.000    0.000    0.069    0.008 pyson.py:132(eval)
        2    0.000    0.000    0.000    0.000 pyson.py:167(pyson)
        2    0.000    0.000    0.000    0.000 pyson.py:176(eval)
        1    0.000    0.000    0.000    0.000 pyson.py:338(pyson)
        1    0.000    0.000    0.000    0.000 pyson.py:352(eval)
        1    0.000    0.000    0.000    0.000 pyson.py:376(pyson)
        1    0.000    0.000    0.000    0.000 pyson.py:390(eval)
        1    0.000    0.000    0.000    0.000 pyson.py:417(pyson)
        1    0.000    0.000    0.000    0.000 pyson.py:427(eval)
       14    0.000    0.000    0.000    0.000 pyson.py:85(default)
        2    0.000    0.000    0.001    0.001 reference.py:39(get)
       31    0.001    0.000    0.002    0.000 rule.py:157(domain_get)
     1402    0.004    0.000    0.004    0.000 singleton.py:13(__call__)
        1    0.000    0.000    0.000    0.000 stock.py:140(_get_origin)
        1    0.000    0.000    0.000    0.000 stock.py:190(_get_origin)
        1    0.000    0.000    0.000    0.000 stock.py:68(check_lot)
        1    0.001    0.001    0.002    0.002 stock.py:77(validate)
        1    0.000    0.000    0.235    0.235 test_performance.py:127(write_move)
      239    0.002    0.000    0.002    0.000 threading.py:1153(currentThread)
       73    0.000    0.000    0.000    0.000 transaction.py:106(set_context)
       29    0.001    0.000    0.001    0.000 transaction.py:120(set_user)
       24    0.001    0.000    0.001    0.000 transaction.py:128(set_cursor)
        6    0.000    0.000    0.009    0.002 transaction.py:140(language)
        6    0.000    0.000    0.009    0.002 transaction.py:142(get_language)
      126    0.000    0.000    0.000    0.000 transaction.py:27(__init__)
      126    0.000    0.000    0.003    0.000 transaction.py:30(__enter__)
      126    0.001    0.000    0.001    0.000 transaction.py:33(__exit__)
        2    0.000    0.000    0.023    0.012 translation.py:381(get_ids)
        7    0.000    0.000    0.001    0.000 translation.py:606(get_source)
        2    0.001    0.000    0.017    0.008 translation.py:638(get_sources)
        1    0.000    0.000    0.000    0.000 trigger.py:130(get_triggers)
        1    0.000    0.000    0.000    0.000 uom.py:134(round)
        2    0.000    0.000    0.002    0.001 uom.py:177(accurate_field)
        1    0.000    0.000    0.011    0.011 uom.py:197(compute_qty)
        2    0.000    0.000    0.001    0.001 warnings.py:24(_show_warning)
        2    0.000    0.000    0.001    0.001 warnings.py:36(formatwarning)




With patch:

         13545 function calls (11873 primitive calls) in 0.109 seconds

   Ordered by: standard name

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000    0.000    0.000 :0(__import__)
       12    0.001    0.000    0.001    0.000 :0(__new__)
        1    0.000    0.000    0.000    0.000 :0(abs)
       24    0.000    0.000    0.000    0.000 :0(all)
        1    0.000    0.000    0.000    0.000 :0(any)
      238    0.002    0.000    0.002    0.000 :0(append)
        2    0.000    0.000    0.000    0.000 :0(clear)
       98    0.000    0.000    0.000    0.000 :0(copy)
       10    0.000    0.000    0.000    0.000 :0(decode)
        2    0.000    0.000    0.000    0.000 :0(end)
       13    0.000    0.000    0.002    0.000 :0(execute)
      346    0.002    0.000    0.002    0.000 :0(extend)
        8    0.000    0.000    0.000    0.000 :0(fetchall)
        1    0.000    0.000    0.000    0.000 :0(fetchmany)
        3    0.000    0.000    0.000    0.000 :0(fetchone)
        1    0.000    0.000    0.002    0.002 :0(filter)
       10    0.000    0.000    0.000    0.000 :0(format)
        9    0.000    0.000    0.000    0.000 :0(fromkeys)
      542    0.000    0.000    0.000    0.000 :0(get)
       37    0.000    0.000    0.000    0.000 :0(get_ident)
  609/338    0.003    0.000    0.045    0.000 :0(getattr)
        2    0.000    0.000    0.000    0.000 :0(globals)
       19    0.000    0.000    0.000    0.000 :0(group)
      582    0.002    0.000    0.002    0.000 :0(hasattr)
       10    0.001    0.000    0.001    0.000 :0(index)
      874    0.003    0.000    0.004    0.000 :0(isinstance)
        1    0.000    0.000    0.000    0.000 :0(isoformat)
       86    0.000    0.000    0.000    0.000 :0(items)
      179    0.000    0.000    0.000    0.000 :0(iteritems)
        1    0.000    0.000    0.000    0.000 :0(itervalues)
    49/48    0.000    0.000    0.000    0.000 :0(join)
       47    0.000    0.000    0.000    0.000 :0(keys)
      457    0.001    0.000    0.001    0.000 :0(len)
    74/72    0.000    0.000    0.012    0.000 :0(map)
       12    0.000    0.000    0.000    0.000 :0(match)
       12    0.000    0.000    0.000    0.000 :0(max)
        1    0.000    0.000    0.000    0.000 :0(min)
        1    0.000    0.000    0.000    0.000 :0(now)
      147    0.000    0.000    0.000    0.000 :0(pop)
       25    0.000    0.000    0.000    0.000 :0(range)
       38    0.001    0.000    0.001    0.000 :0(repr)
        1    0.000    0.000    0.000    0.000 :0(round)
        4    0.000    0.000    0.000    0.000 :0(rstrip)
       81    0.000    0.000    0.000    0.000 :0(setattr)
      111    0.001    0.000    0.001    0.000 :0(setdefault)
        1    0.001    0.001    0.001    0.001 :0(setprofile)
       11    0.000    0.000    0.000    0.000 :0(sort)
       45    0.000    0.000    0.000    0.000 :0(split)
        1    0.000    0.000    0.000    0.000 :0(startswith)
        5    0.000    0.000    0.000    0.000 :0(strip)
        1    0.000    0.000    0.000    0.000 :0(today)
       74    0.003    0.000    0.016    0.000 :0(update)
        1    0.000    0.000    0.000    0.000 :0(upper)
       10    0.000    0.000    0.000    0.000 :0(values)
       11    0.000    0.000    0.000    0.000 :0(warn)
        1    0.000    0.000    0.000    0.000 :0(write)
        2    0.000    0.000    0.000    0.000 :0(zip)
        1    0.000    0.000    0.108    0.108 <string>:1(<module>)
        5    0.000    0.000    0.000    0.000 <string>:8(__new__)
        1    0.000    0.000    0.000    0.000 __init__.py:10(get)
        1    0.000    0.000    0.000    0.000 __init__.py:1002(params)
        1    0.000    0.000    0.000    0.000 __init__.py:1014(__init__)
        1    0.000    0.000    0.000    0.000 __init__.py:1019(__str__)
        1    0.000    0.000    0.000    0.000 __init__.py:1022(params)
       10    0.000    0.000    0.000    0.000 __init__.py:119(__enter__)
       10    0.000    0.000    0.000    0.000 __init__.py:126(__exit__)
      155    0.001    0.000    0.004    0.000 __init__.py:132(get)
        1    0.000    0.000    0.000    0.000 __init__.py:138(set)
        9    0.000    0.000    0.001    0.000 __init__.py:143(alias_factory)
       30    0.000    0.000    0.015    0.000 __init__.py:156(__iter__)
      155    0.000    0.000    0.004    0.000 __init__.py:164(alias)
       18    0.000    0.000    0.000    0.000 __init__.py:168(__getattr__)
        9    0.000    0.000    0.000    0.000 __init__.py:175(select)
        9    0.000    0.000    0.000    0.000 __init__.py:185(__init__)
       20    0.000    0.000    0.000    0.000 __init__.py:194(order_by)
        9    0.000    0.000    0.000    0.000 __init__.py:198(order_by)
        2    0.000    0.000    0.000    0.000 __init__.py:203(<genexpr>)
        9    0.000    0.000    0.000    0.000 __init__.py:206(_order_by_str)
       10    0.000    0.000    0.000    0.000 __init__.py:213(limit)
        9    0.000    0.000    0.000    0.000 __init__.py:217(limit)
        9    0.000    0.000    0.000    0.000 __init__.py:223(_limit_str)
       17    0.000    0.000    0.000    0.000 __init__.py:234(offset)
        9    0.000    0.000    0.000    0.000 __init__.py:238(offset)
        9    0.000    0.000    0.000    0.000 __init__.py:244(_offset_str)
        9    0.000    0.000    0.000    0.000 __init__.py:256(__init__)
       27    0.000    0.000    0.000    0.000 __init__.py:272(columns)
        9    0.000    0.000    0.000    0.000 __init__.py:276(columns)
      137    0.000    0.000    0.000    0.000 __init__.py:278(<genexpr>)
       36    0.000    0.000    0.000    0.000 __init__.py:281(where)
        9    0.000    0.000    0.000    0.000 __init__.py:285(where)
       18    0.000    0.000    0.000    0.000 __init__.py:292(group_by)
        9    0.000    0.000    0.000    0.000 __init__.py:296(group_by)
       18    0.000    0.000    0.000    0.000 __init__.py:304(having)
        9    0.000    0.000    0.000    0.000 __init__.py:308(having)
        9    0.000    0.000    0.000    0.000 __init__.py:315(for_)
        9    0.000    0.000    0.000    0.000 __init__.py:319(for_)
      128    0.000    0.000    0.005    0.000 __init__.py:327(_format_column)
        9    0.000    0.000    0.010    0.001 __init__.py:334(__str__)
        9    0.001    0.000    0.005    0.001 __init__.py:357(params)
        1    0.000    0.000    0.000    0.000 __init__.py:390(__init__)
        7    0.000    0.000    0.000    0.000 __init__.py:400(table)
        1    0.000    0.000    0.000    0.000 __init__.py:404(table)
        2    0.000    0.000    0.000    0.000 __init__.py:409(columns)
        9    0.000    0.000    0.000    0.000 __init__.py:41(alias)
        1    0.000    0.000    0.000    0.000 __init__.py:413(columns)
        4    0.000    0.000    0.000    0.000 __init__.py:416(<genexpr>)
        4    0.000    0.000    0.000    0.000 __init__.py:417(<genexpr>)
        1    0.000    0.000    0.000    0.000 __init__.py:434(returning)
        3    0.000    0.000    0.000    0.000 __init__.py:440(_format)
        1    0.000    0.000    0.000    0.000 __init__.py:491(__init__)
        2    0.000    0.000    0.000    0.000 __init__.py:497(values)
        1    0.000    0.000    0.000    0.000 __init__.py:501(values)
        4    0.000    0.000    0.000    0.000 __init__.py:508(where)
        1    0.000    0.000    0.000    0.000 __init__.py:512(where)
        1    0.000    0.000    0.000    0.000 __init__.py:519(__str__)
        4    0.000    0.000    0.000    0.000 __init__.py:520(<genexpr>)
        4    0.000    0.000    0.000    0.000 __init__.py:532(<genexpr>)
        1    0.000    0.000    0.000    0.000 __init__.py:539(params)
       13    0.000    0.000    0.000    0.000 __init__.py:658(__init__)
       11    0.000    0.000    0.000    0.000 __init__.py:662(__str__)
        9    0.000    0.000    0.000    0.000 __init__.py:665(params)
        1    0.000    0.000    0.000    0.000 __init__.py:673(update)
        1    0.000    0.000    0.000    0.000 __init__.py:74(__init__)
        9    0.000    0.000    0.000    0.000 __init__.py:768(select)
        9    0.000    0.000    0.002    0.000 __init__.py:771(__str__)
        9    0.001    0.000    0.002    0.000 __init__.py:772(format)
        9    0.000    0.000    0.000    0.000 __init__.py:783(params)
       31    0.001    0.000    0.001    0.000 __init__.py:81(param)
       11    0.001    0.000    0.001    0.000 __init__.py:892(in_)
      127    0.000    0.000    0.001    0.000 __init__.py:904(as_)
        1    0.000    0.000    0.000    0.000 __init__.py:907(cast)
       37    0.000    0.000    0.001    0.000 __init__.py:93(get)
      145    0.000    0.000    0.000    0.000 __init__.py:941(__init__)
        6    0.000    0.000    0.000    0.000 __init__.py:946(table)
      146    0.001    0.000    0.004    0.000 __init__.py:954(__str__)
      143    0.001    0.000    0.001    0.000 __init__.py:966(params)
      127    0.001    0.000    0.001    0.000 __init__.py:974(__init__)
      127    0.001    0.000    0.001    0.000 __init__.py:979(__str__)
      127    0.000    0.000    0.000    0.000 __init__.py:982(params)
        1    0.000    0.000    0.000    0.000 __init__.py:990(__init__)
        1    0.000    0.000    0.000    0.000 __init__.py:995(__str__)
       85    0.002    0.000    0.003    0.000 _abcoll.py:526(update)
      255    0.001    0.000    0.001    0.000 _weakrefset.py:68(__contains__)
       85    0.000    0.000    0.001    0.000 abc.py:128(__instancecheck__)
       85    0.001    0.000    0.001    0.000 abc.py:148(__subclasscheck__)
        2    0.000    0.000    0.000    0.000 cache.py:13(freeze)
       85    0.000    0.000    0.007    0.000 cache.py:135(__init__)
       24    0.000    0.000    0.000    0.000 cache.py:141(__setitem__)
      109    0.000    0.000    0.000    0.000 cache.py:154(_check_size_limit)
        2    0.000    0.000    0.000    0.000 cache.py:17(<genexpr>)
        2    0.000    0.000    0.000    0.000 cache.py:39(_key)
        2    0.000    0.000    0.000    0.000 cache.py:44(get)
        1    0.000    0.000    0.001    0.001 char.py:20(__init__)
        1    0.000    0.000    0.000    0.000 char.py:44(_set_autocomplete)
        1    0.000    0.000    0.000    0.000 char.py:50(_get_size)
        1    0.001    0.001    0.001    0.001 char.py:53(_set_size)
        1    0.000    0.000    0.000    0.000 char.py:70(sql_type)
        1    0.000    0.000    0.000    0.000 char.py:9(autocomplete_validate)
        2    0.000    0.000    0.000    0.000 collections.py:132(pop)
       85    0.003    0.000    0.007    0.000 collections.py:38(__init__)
       24    0.000    0.000    0.000    0.000 collections.py:54(__setitem__)
        2    0.000    0.000    0.000    0.000 collections.py:64(__delitem__)
        1    0.000    0.000    0.000    0.000 collections.py:91(clear)
        2    0.000    0.000    0.000    0.000 conditionals.py:40(_format)
        1    0.000    0.000    0.000    0.000 conditionals.py:89(__init__)
        1    0.000    0.000    0.000    0.000 conditionals.py:92(__str__)
        1    0.000    0.000    0.000    0.000 conditionals.py:96(params)
        2    0.000    0.000    0.000    0.000 config.py:146(__getitem__)
        2    0.000    0.000    0.000    0.000 configuration.py:20(get_language)
       11    0.000    0.000    0.000    0.000 contextlib.py:12(__init__)
       11    0.000    0.000    0.003    0.000 contextlib.py:15(__enter__)
       11    0.000    0.000    0.000    0.000 contextlib.py:21(__exit__)
       11    0.001    0.000    0.001    0.000 contextlib.py:82(helper)
       22    0.001    0.000    0.003    0.000 contextlib.py:88(nested)
       38    0.000    0.000    0.007    0.000 database.py:110(get_cache)
        1    0.000    0.000    0.000    0.000 database.py:115(now)
        7    0.000    0.000    0.000    0.000 database.py:305(__build_dict)
      125    0.000    0.000    0.000    0.000 database.py:306(<genexpr>)
        1    0.000    0.000    0.000    0.000 database.py:316(dictfetchmany)
        7    0.000    0.000    0.000    0.000 database.py:320(dictfetchall)
       13    0.000    0.000    0.000    0.000 database.py:335(__getattr__)
       13    0.000    0.000    0.002    0.000 database.py:340(execute)
        1    0.000    0.000    0.000    0.000 database.py:387(has_constraint)
        3    0.000    0.000    0.001    0.000 database.py:390(<lambda>)
        1    0.000    0.000    0.000    0.000 database.py:392(<lambda>)
       10    0.001    0.000    0.001    0.000 dbapi2.py:64(convert_timestamp)
        1    0.000    0.000    0.001    0.001 decimal.py:1640(_fix)
        1    0.000    0.000    0.001    0.001 decimal.py:2422(quantize)
        1    0.000    0.000    0.000    0.000 decimal.py:3724(_dec_from_triple)
        1    0.000    0.000    0.000    0.000 decimal.py:3782(__init__)
        2    0.000    0.000    0.000    0.000 decimal.py:3895(Etiny)
        1    0.000    0.000    0.000    0.000 decimal.py:3899(Etop)
        1    0.000    0.000    0.000    0.000 decimal.py:441(getcontext)
        6    0.001    0.000    0.002    0.000 decimal.py:515(__new__)
        2    0.000    0.000    0.000    0.000 decimal.py:5835(_convert_other)
        2    0.000    0.000    0.000    0.000 decimal.py:700(_isnan)
        1    0.000    0.000    0.000    0.000 decimal.py:728(_check_nans)
        4    0.000    0.000    0.000    0.000 decimal.py:793(__nonzero__)
        1    0.000    0.000    0.000    0.000 decimal.py:800(_cmp)
        1    0.000    0.000    0.000    0.000 decimal.py:872(__ne__)
        1    0.000    0.000    0.000    0.000 decimal.py:999(__str__)
        1    0.000    0.000    0.000    0.000 decoder.py:303(__init__)
        1    0.000    0.000    0.021    0.021 decoder.py:360(decode)
        1    0.000    0.000    0.021    0.021 decoder.py:371(raw_decode)
        1    0.000    0.000    0.000    0.000 encoder.py:101(__init__)
        1    0.000    0.000    0.000    0.000 encoder.py:186(encode)
        1    0.000    0.000    0.000    0.000 encoder.py:212(iterencode)
        1    0.000    0.000    0.000    0.000 field.py:14(domain_validate)
        1    0.000    0.000    0.000    0.000 field.py:147(_set_domain)
        4    0.000    0.000    0.000    0.000 field.py:153(_get_states)
        1    0.000    0.000    0.000    0.000 field.py:156(_set_states)
        1    0.000    0.000    0.000    0.000 field.py:165(_set_on_change)
        1    0.000    0.000    0.000    0.000 field.py:17(test_domain)
        1    0.000    0.000    0.000    0.000 field.py:173(_set_on_change_with)
       39    0.000    0.000    0.001    0.000 field.py:179(_get_depends)
        1    0.000    0.000    0.000    0.000 field.py:182(_set_depends)
        1    0.000    0.000    0.000    0.000 field.py:191(_set_context)
   691/36    0.005    0.000    0.094    0.003 field.py:197(__get__)
        1    0.000    0.000    0.000    0.000 field.py:203(__set__)
        1    0.000    0.000    0.000    0.000 field.py:209(sql_format)
        1    0.000    0.000    0.000    0.000 field.py:216(_domain_value)
        1    0.000    0.000    0.000    0.000 field.py:224(_domain_add_null)
        1    0.000    0.000    0.000    0.000 field.py:234(convert_domain)
        1    0.000    0.000    0.000    0.000 field.py:248(convert_order)
        1    0.000    0.000    0.000    0.000 field.py:36(states_validate)
        1    0.000    0.000    0.000    0.000 field.py:48(on_change_validate)
        1    0.000    0.000    0.000    0.000 field.py:53(on_change_with_validate)
        1    0.000    0.000    0.000    0.000 field.py:58(depends_validate)
        1    0.000    0.000    0.000    0.000 field.py:62(context_validate)
        1    0.000    0.000    0.000    0.000 field.py:66(size_validate)
        1    0.000    0.000    0.000    0.000 field.py:92(__init__)
        8    0.000    0.000    0.000    0.000 float.py:44(_get_digits)
      104    0.001    0.000    0.002    0.000 function.py:49(__getattr__)
        2    0.000    0.000    0.039    0.019 function.py:68(get)
        2    0.000    0.000    0.039    0.019 function.py:76(call)
        4    0.000    0.000    0.038    0.009 function.py:81(<genexpr>)
        4    0.000    0.000    0.039    0.010 function.py:87(<genexpr>)
        4    0.000    0.000    0.000    0.000 functions.py:55(__init__)
        2    0.000    0.000    0.000    0.000 functions.py:58(_format)
        2    0.000    0.000    0.000    0.000 functions.py:65(__str__)
      3/2    0.000    0.000    0.000    0.000 functions.py:72(params)
        1    0.000    0.000    0.000    0.000 functions.py:91(__str__)
        2    0.000    0.000    0.000    0.000 inspect.py:142(isfunction)
        2    0.000    0.000    0.000    0.000 inspect.py:209(iscode)
        2    0.000    0.000    0.000    0.000 inspect.py:67(ismethod)
        2    0.000    0.000    0.000    0.000 inspect.py:743(getargs)
        2    0.000    0.000    0.000    0.000 inspect.py:803(getargspec)
        1    0.000    0.000    0.000    0.000 linecache.py:13(getline)
        1    0.000    0.000    0.000    0.000 linecache.py:33(getlines)
       34    0.003    0.000    0.003    0.000 many2one.py:66(get_target)
       11    0.001    0.000    0.002    0.000 misc.py:327(reduce_ids)
       11    0.000    0.000    0.000    0.000 misc.py:333(<genexpr>)
        1    0.000    0.000    0.000    0.000 misc.py:416(reduce_domain)
        1    0.000    0.000    0.000    0.000 model.py:354(pre_validate)
       37    0.000    0.000    0.002    0.000 model.py:357(__init__)
      687    0.002    0.000    0.002    0.000 model.py:378(__getattr__)
  262/261    0.003    0.000    0.003    0.000 model.py:386(__setattr__)
        3    0.000    0.000    0.000    0.000 model.py:400(__int__)
        4    0.000    0.000    0.000    0.000 model.py:443(__nonzero__)
       10    0.000    0.000    0.000    0.000 model.py:513(check)
       18    0.000    0.000    0.001    0.000 model.py:658(check)
      230    0.000    0.000    0.000    0.000 model.py:668(<genexpr>)
        1    0.000    0.000    0.000    0.000 modelsql.py:1005(search_domain)
        2    0.000    0.000    0.000    0.000 modelsql.py:1020(is_leaf)
      2/1    0.000    0.000    0.000    0.000 modelsql.py:1026(convert)
        2    0.000    0.000    0.000    0.000 modelsql.py:1039(<genexpr>)
        1    0.001    0.001    0.001    0.001 modelsql.py:1050(_update_mptt)
        1    0.000    0.000    0.002    0.002 modelsql.py:1159(validate)
       24    0.000    0.000    0.000    0.000 modelsql.py:185(table_query)
        1    0.000    0.000    0.000    0.000 modelsql.py:230(__insert_history)
        1    0.000    0.000    0.000    0.000 modelsql.py:265(__check_timestamp)
      9/5    0.009    0.001    0.057    0.011 modelsql.py:406(read)
       13    0.000    0.000    0.000    0.000 modelsql.py:49(__table__)
        1    0.000    0.000    0.050    0.050 modelsql.py:631(write)
        1    0.000    0.000    0.002    0.002 modelsql.py:861(search)
        2    0.000    0.000    0.000    0.000 modelsql.py:885(<genexpr>)
        1    0.000    0.000    0.000    0.000 modelsql.py:894(convert_from)
        1    0.000    0.000    0.000    0.000 modelstorage.py:1005(required_test)
        1    0.000    0.000    0.001    0.001 modelstorage.py:1056(digits_test)
        9    0.001    0.000    0.002    0.000 modelstorage.py:113(read)
       37    0.003    0.000    0.014    0.000 modelstorage.py:1174(__init__)
      291    0.002    0.000    0.002    0.000 modelstorage.py:1195(_cache)
   687/32    0.013    0.000    0.092    0.003 modelstorage.py:1202(__getattr__)
        8    0.000    0.000    0.000    0.000 modelstorage.py:1239(<genexpr>)
      222    0.003    0.000    0.011    0.000 modelstorage.py:1244(not_cached)
      209    0.001    0.000    0.002    0.000 modelstorage.py:1249(to_load)
        9    0.000    0.000    0.001    0.000 modelstorage.py:1270(filter_)
       55    0.004    0.000    0.023    0.000 modelstorage.py:1278(instantiate)
        1    0.000    0.000    0.001    0.001 modelstorage.py:129(write)
        1    0.000    0.000    0.000    0.000 modelstorage.py:1356(_save_values)
        1    0.000    0.000    0.108    0.108 modelstorage.py:1387(save)
        1    0.000    0.000    0.000    0.000 modelstorage.py:1411(__init__)
        1    0.000    0.000    0.021    0.021 modelstorage.py:1416(__getitem__)
        1    0.000    0.000    0.021    0.021 modelstorage.py:1440(get)
        1    0.000    0.000    0.000    0.000 modelstorage.py:1447(__nonzero__)
        1    0.000    0.000    0.000    0.000
modelstorage.py:161(trigger_write_get_eligibles)
        1    0.000    0.000    0.000    0.000 modelstorage.py:178(trigger_write)
        1    0.000    0.000    0.000    0.000
modelstorage.py:374(_search_domain_active)
        4    0.000    0.000    0.001    0.000 modelstorage.py:441(browse)
        1    0.000    0.000    0.001    0.001 modelstorage.py:783(check_xml_record)
        1    0.000    0.000    0.000    0.000 modelstorage.py:879(validate)
        1    0.001    0.001    0.046    0.046 modelstorage.py:883(_validate)
        2    0.000    0.000    0.000    0.000 modelstorage.py:911(is_pyson)
       39    0.001    0.000    0.002    0.000 modelstorage.py:933(<lambda>)
        1    0.000    0.000    0.020    0.020
move.py:424(on_change_with_unit_price_required)
        1    0.000    0.000    0.002    0.002 move.py:475(check_period_closed)
        1    0.000    0.000    0.037    0.037 move.py:561(_get_internal_quantity)
        1    0.001    0.001    0.107    0.107 move.py:650(write)
        2    0.000    0.000    0.000    0.000 move.py:663(<genexpr>)
        1    0.000    0.000    0.000    0.000 numeric.py:17(sql_format)
       12    0.000    0.000    0.000    0.000 operators.py:122(__init__)
       13    0.000    0.000    0.000    0.000 operators.py:126(_operands)
       13    0.000    0.000    0.005    0.000 operators.py:130(__str__)
       13    0.000    0.000    0.000    0.000 operators.py:142(_operands)
       13    0.000    0.000    0.005    0.000 operators.py:146(__str__)
        1    0.000    0.000    0.000    0.000 operators.py:199(_operands)
        1    0.000    0.000    0.000    0.000 operators.py:207(__str__)
    26/13    0.001    0.000    0.001    0.000 operators.py:55(params)
    26/13    0.000    0.000    0.001    0.000 operators.py:58(convert)
       26    0.001    0.000    0.005    0.000 operators.py:72(_format)
       90    0.001    0.000    0.001    0.000 pool.py:155(get)
        1    0.000    0.000    0.000    0.000 pool.py:186(object_name_list)
       70    0.001    0.000    0.001    0.000 pool.py:51(__new__)
       70    0.000    0.000    0.000    0.000 pool.py:65(__init__)
     56/1    0.000    0.000    0.022    0.022 product.py:157(__getattr__)
        1    0.000    0.000    0.018    0.018 product.py:179(get_default_uom)
        0    0.000             0.000          profile:0(profiler)
        1    0.000    0.000    0.109    0.109 profile:0(write_move(move, 1))
        1    0.000    0.000    0.000    0.000 pyson.py:100(__init__)
        2    0.000    0.000    0.021    0.011 pyson.py:104(_object_hook)
        1    0.000    0.000    0.000    0.000 pyson.py:119(pyson)
        1    0.000    0.000    0.021    0.021 pyson.py:132(eval)
        1    0.000    0.000    0.000    0.000 pyson.py:167(pyson)
        1    0.000    0.000    0.000    0.000 pyson.py:176(eval)
        2    0.000    0.000    0.000    0.000 pyson.py:85(default)
       11    0.000    0.000    0.000    0.000 rule.py:157(domain_get)
      653    0.004    0.000    0.004    0.000 singleton.py:13(__call__)
        1    0.000    0.000    0.000    0.000 stock.py:68(check_lot)
        1    0.000    0.000    0.002    0.002 stock.py:77(validate)
        1    0.000    0.000    0.108    0.108 test_performance.py:127(write_move)
       37    0.001    0.000    0.001    0.000 threading.py:1153(currentThread)
       46    0.000    0.000    0.001    0.000 transaction.py:106(set_context)
       12    0.000    0.000    0.001    0.000 transaction.py:120(set_user)
       11    0.000    0.000    0.000    0.000 transaction.py:128(set_cursor)
        1    0.000    0.000    0.000    0.000 transaction.py:140(language)
        1    0.000    0.000    0.000    0.000 transaction.py:142(get_language)
       69    0.002    0.000    0.002    0.000 transaction.py:27(__init__)
       69    0.001    0.000    0.002    0.000 transaction.py:30(__enter__)
       69    0.000    0.000    0.000    0.000 transaction.py:33(__exit__)
        1    0.000    0.000    0.000    0.000 trigger.py:130(get_triggers)
        1    0.000    0.000    0.000    0.000 uom.py:134(round)
        2    0.000    0.000    0.002    0.001 uom.py:177(accurate_field)
        1    0.000    0.000    0.014    0.014 uom.py:197(compute_qty)
        1    0.000    0.000    0.000    0.000 warnings.py:24(_show_warning)
        1    0.000    0.000    0.000    0.000 warnings.py:36(formatwarning)
History
Date User Action Args
2013-10-27 15:02:47giedriussetmessageid: <1382882567.83.0.117883699171.issue3445@tryton.org>
2013-10-27 15:02:47giedriuslinkissue3445 messages
2013-10-27 15:02:46giedriuscreate

Showing 10 items. Show all history (warning: this could be VERY long)