Agreed. we have unit tests and the code passes them all. The fact is we do
not know if users are doing something not covered by them. We want to know.
On Sunday, 26 August 2012 09:58:47 UTC-5, Andrew wrote:
>
> Just an idea for a formal approach moving forward:
>
> Write unit tests and have others contribute unit tests where the base ones
> don't cover their scenarios and then use Jenkins or some CI tool to run
> these at some time interval or every time there's code checked in.
> OpenShift provides a jenkins cartridge if you need an environment for this.
>
> Andrew
>
> On Sunday, August 26, 2012 9:47:35 AM UTC-5, Massimo Di Pierro wrote:
>>
>> Michele, Jonathan, Bruno, Anthony and I have continued test possible ways
>> to improve web2py code.
>>
>> We have lazy tables in trunk and they can increase the speed of your
>> code a lot but require minor rewrites of models.
>>
>> We are also looking at ways to improve the speed of your code without any
>> rewrite and we have some important changes in trunk.
>> They really need to be tested to make sure they do not break backward
>> compatibility.
>>
>> accessing:
>> request.<anything>
>> response.<anything>
>> session.<anything>
>> as you can imagine this is everywhere. this is a major bottleneck. We
>> made it 2-3x faster
>>
>> accessing:
>> db.<tablename>
>> we made this 2x faster
>>
>> accessing:
>> db.<tablename>.<fieldname>
>> we made this 20x faster (not a typo, 20x)
>>
>> Given row = db(db.table).select()[0]
>> accessing:
>> row.<fieldname>
>> This is also a major bottleneck. We make this 10x faster.
>>
>> WE NEED TESTERS. Does the latest trunk/nightly built break your app?
>>
>> WE NEED INDEPENDENT BENCHMARKS AGAINST 1.99.7. Here is the code to
>> benchmark:
>>
>> -------------
>> import time
>> db=DAL()
>> db.define_table('person',Field('name'))
>> db.test.insert(name='one')
>> n = 100000
>>
>> t0 = time.time()
>> for k in range(n):
>> y = db.person.name
>> print (time.time()-t0)/n
>>
>> row = db(db.person).select().first()
>>
>> t0 = time.time()
>> for k in range(n):
>> y = row.name
>> print (time.time()-t0)/n
>> ----------
>>
>> Massimo
>>
>
--