Как я могу оптимизировать следующий код, который в настоящее время занимает более 2 минут для получения и записи более 800 записей из пула более 100 тыс. Записей, возвращая 6 полей на запись (добавляет приблизительно 20 секунд на дополнительное поле):Как ускорить извлечение данных из .NET AD в ColdFusion?
<cfset dllPath="C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.DirectoryServices.dll" />
<cfset LDAPPath="LDAP://" & arguments.searchPath />
<cfset theLookUp=CreateObject(".NET","System.DirectoryServices.DirectoryEntry", dllPath).init(LDAPPath) />
<cfset theSearch=CreateObject(".NET","System.DirectoryServices.DirectorySearcher", dllPath).init(theLookUp) />
<cfset theSearch.Set_Filter(arguments.theFilter) />
<cfset theObject = theSearch.FindAll() />
<cfloop index="row" from="#startRow#" to="#endRow#">
<cfset QueryAddRow(theQuery) />
<cfloop list="#columnList#" index="col">
<cfloop from="0" to="#theObject.Get_Item(row).Get_Properties().Get_Item(col).Get_Count()-1#" index="item">
<cftry>
<cfset theQuery[col][theQuery.recordCount]=ListAppend(theQuery[col][theQuery.recordCount],theObject.Get_Item(row).Get_Properties().Get_Item(col).Get_Item(item),"|") />
<cfcatch type="any">
</cfcatch>
</cftry>
</cfloop>
</cfloop>
</cfloop>
переменного счетчик/кэширование не надо - CF будет кэшировать от/до значений cfloop , (хотя и не для оператора цикла в cfscript) – 2008-09-17 18:01:55
я бы так подумал, но я пытался продемонстрировать точку. – x0n 2008-09-17 19:17:04