Переход на SAX-разбор звучит как крайняя мера - это такой низкоуровневый интерфейс.

я проблемы с циклическим пересылкой XML-файла размером около 20-30 МБ (650000 строк).

Это мой мета-код:

<cffile action="READ" ile="file.xml" variable="usersRaw">

<cfset usersXML = XmlParse(usersRaw)>
<cfset advsXML = XmlSearch(usersXML, "/advs/advuser")>
<cfset users = XmlSearch(usersXML, "/advs/advuser/user")>

<cfset numUsers = ArrayLen(users)>
<cfloop index="i" from="1" to="#numUsers#">
    ... some selects...
    ... insert...
    <cfset advs = annunciXml[i]["vehicle"]>
    <cfset numAdvs = ArrayLen(advs)> 
    <cfloop index="k" from="1" to="#numAdvs#">        
        ... insert... or ... update...
    </cfloop>
</cfloop>

структура XML-файла (да, это не очень хорошо :-)

<advs>
   <advuser>
      <user>
      </user>
      <vehicle>
      <vehicle>
   </advuser>
</advs>

После ~ 120000 строк я получаю сообщение об ошибке: «Недостаточно памяти».

Как я могу улучшить производительность моего скрипта?

Как я могу диагностировать, где есть максимальное потребление памяти?

Ответы на вопрос(3)

Ваш ответ на вопрос