Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Best Practices to Improve CursorAdapter Speed
Message
 
À
14/02/2006 14:10:27
Information générale
Forum:
Visual FoxPro
Catégorie:
Client/serveur
Versions des environnements
Visual FoxPro:
VFP 9
OS:
Windows XP SP2
Network:
Windows XP
Database:
MS SQL Server
Divers
Thread ID:
01094765
Message ID:
01096283
Vues:
15
Hi Aleksey

My mistake I had told the tech. support at ADS that it was a problem with the connection type. So why I said UNICODE here I do not know. I guess headcolds and testing are not a good combination.

Another questions is does the cursoradpater class use early binding for ADO? I began all this testing to find a way to speed up the cursoradpater class with ADO over the Internet.

Below is the code I used for early binding.

Thanks,
Simon
Local lnSec1,lnSec2,lnSec3,lnSec4,lnSec5,loDI,loCI 
Local loC As ADODB.Connection
Local loD As ADODB.RecordSet
lnSec1=Seconds()
loC=CreateObjectEX("ADODB.Connection","","")
loCI=GetInterface(loC,"_Connection")
loCI.ConnectionString="Provider=Advantage OLE DB Provider; Data Source=\\server1\apps\ads\FOPro.add; User ID=adssys; Password=teeka;"
loCI.CursorLocation=2
loCI.Open
lnSec2=Seconds()
*loDI=loCI.Execute("Select * From UPDatDic")
loD=CreateObjectEX("ADODB.RecordSet","","")
loDI=GetInterface(loD,"_RecordSet")
loDI.Open("Select * From UPDatDic",loCI,0,3)
lnSec3=Seconds()

Use dbf\updatdic
Copy Structure to tmp\updatdic
Use tmp\UPDatDic
With loDI.Fields
   lnSec4=Second()
   loAllowNull=.Item("AllowNull")
   loAType=.Item("AType")
   loAutoInc=.Item("AutoInc")
   loBackColor=.Item("BackColor")
   loBoundCol=.Item("BoundCol")
   loCDXFilter=.Item("CdxFilter")
   loCDXKey=.Item("CDXKey")......
>Hi Simon,
>
>>Early binding gave a small increase in speed but not enough to make it worthwhile.
>>
>Did you use early binding (GETINTERFACE) for Fields objects? Did you store early-bound Field instances into vars before the read loop?
>
>>So I guess it must be due to the UNICODE conversions.
>>
>
>I don't think this is the case. Assuming you ran your tests on the same set of data, the following run already includes all the costs associated with calling ADO objects from VFP (binding, Unicode translation, etc.)
>
>Remote Server (MSSQL) - Client Side Cursor    Task                     Time
>                                              Open ADO Connection      0.015            0.094     0.015
>                                              Open ADO RecordSet       0.266            0.266     0.281
>                                              Insert Records           0.828            0.813     0.829
>
>
>Going against different connection shouldn't significantly affect those costs. Therefore, the perf degradation for the following run can be explained only by the fact that ADO/OLEDB works slower for this connection+type of cursor. Did you use server side, read-only, forward-only cursor for this run?
>
>
>Internet Server (ADS) - Server Side Cursor    Task                     Time
>                                              Open ADO Connection      5.34             4.765     27.347
>                                              Open ADO RecordSet       0.346            0.282     0.272
>                                              Insert Records           113.102          128.245   131.751
>
>
>If you want to compare performance with VB6, comparison with MSDatGrd isn't really valid here, you are not measuring time for the same set of operations. MSDatGrd may not retrieve all the data, etc.
>
>Aleksey.
Simon White
dCipher Computing
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform