The more I look at this the more this smells like your issue.  I bet you’re testing this in development mode.  In this case there would be a lot of overhead in checking the database to see if it’s changed or not. This would be exacerbated by having complex objects with many relationships.

 

If you want to see the best speed turn off all debugging, set your reactor to production mode and turn on trusted cache.  It should fly J

 

Doug

 


From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Doug Hughes
Sent: Thursday, April 20, 2006 9:18 PM
To: [email protected]
Subject: RE: [Reactor For CF] Using iterator method(s) to create/insert a record into a table doubles execution time?

 

One other thing – are you testing the time in production mode?  If you’re in development it’ll probably be pretty slow for you.  Production caches a lot more data and, in general, is much faster.

 

Doug

 


From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Daryl
Sent: Thursday, April 20, 2006 9:06 PM
To: [email protected]
Subject: Re: [Reactor For CF] Using iterator method(s) to create/insert a record into a table doubles execution time?

 



On 4/20/06, Doug Hughes <[EMAIL PROTECTED]> wrote:
> Can you clarify this?
>
> Doug
>
> relative speeds are about the same without debugging:
>
there's more code in the cfcs than these calls, but these calls are the only difference between the two cfcs:

267 milliseconds not using iterator add()


            <!----------------------------
            ==============================
            EVENT PHOTOS INSERT             
            ==============================
            ----------------------------->    
            <!--- create a record --->
            <cfset Event_Photos_Record = Reactor.createRecord("Event_Photos") />

            <!--- populate the new record --->
            
            <CFSET sScheduleID = LEFT( arguments.Photo_ID,5)>
            <CFSET sCameraID = MID(arguments.Photo_ID,6,3)>
            <CFSET sSequence_Num = RIGHT(arguments.Photo_ID,5)>

            <cfset this_path = "/photos/" & sScheduleID & "/" & sCameraID & "/" & sSequence_Num & ".jpg">
              <cfset Event_Photos_Record.SETEVENT_PHOTO_ID("#arguments.PHOTO_ID#")>
            <cfset Event_Photos_Record.SETPATH("#trim(this_path)#")>    
            <cfset Event_Photos_Record.SETPHOTO_ENVIRONMENT_ID("#arguments.WATERMARK_ID#")>
            <cfset Event_Photos_Record.SETR_ELAT_ID("#Photo_Loc_R_ELAT_ID#") />
            <cfset Event_Photos_Record.SETEVENT_DAY_ID("#arguments.SUB_EVENT_DATE_ID#") />
            <cfset Event_Photos_Record.SETCLIENT_LICENSE_ID("#efn_client_licenseID#") />
            <cfset Event_Photos_Record.SETSYSTEM_ID("#arguments.CAMERA_ID)#")>
            <cfset Event_Photos_Record.SETSEQUENCE_ID("#arguments.sSequence_Num#")>
            <cfset Event_Photos_Record.SETCREATE_DTM(#arguments.CREATE_DTM#) />
            <cfset Event_Photos_Record.SETSAMPLE_FLAG("0")>

            <!--- save the record --->
            <cfset Event_Photos_Record.save() />

            <cfset inserted_id_event_photos = Event_Photos_Record.GETEVENT_PHOTO_ID()>
            
        

            <!----------------------------
            ==============================
            FOOTPRINTS INSERT             
            ==============================
            ----------------------------->    

            <!--- create a record --->
            <cfset Footprints_Record = Reactor.createRecord("Footprints") />

            <!--- populate the new record --->
            <cfset Footprints_Record.SETEVENT_TOKEN_ID("#arguments.BARCODE_ID#")>
            <cfset Footprints_Record.SETR_ELAT_ID("#Photo_Loc_R_ELAT_ID)#") />
            <cfset Footprints_Record.SETEVENT_DAY_ID("#arguments.SUB_EVENT_DATE_ID#") />
            <cfset Footprints_Record.SETCLIENT_LICENSE_ID("#efn_client_licenseID)#") />
            <cfset Footprints_Record.SETSYSTEM_ID("#arguments.CAMERA_ID#")>
            <cfset Footprints_Record.SETCREATE_DTM("#arguments.CREATE_DTM#") />
            <cfset Footprints_Record.SETSAMPLE_FLAG("0")>
            <cfset Footprints_Record.SETIP_ADDRESS("")>

            <!--- save the record --->
            <cfset Footprints_Record.save() />

            <Cfset inserted_id_footprints_loc = Footprints_Record.GETFOOTPRINT_ID()>
            <!--- Footprints_ID (loc): <cfoutput>#inserted_id_footprints_loc#</cfoutput><br> --->

            <!------------------------
            ==========================
            R_FOOTPRINT_PHOTO INSERT  
            ==========================
             ------------------------>    

            <!--- create a Record --->
            <cfset R_Footprint_Photo_Record = Reactor.createRecord("R_Footprint_Photo") />

            <!--- populate the new record --->
            <cfset R_Footprint_Photo_Record.SETEVENT_PHOTO_ID("#inserted_id_event_photos#") />
            <cfset  R_Footprint_Photo_Record.SETFOOTPRINT_ID("#inserted_id_footprints_loc#") />
            <!--- save the record --->
            <cfset R_Footprint_Photo_Record.save() />
 
 
 426 milliseconds using the iterator calls

the iterator is based on a linking table relationship


             <!----------------------------
            ==============================
            EVENT PHOTOS INSERT             
            ==============================
            ----------------------------->    
            <!--- create a record --->
            <cfset Event_Photos_Record = Reactor.createRecord("Event_Photos") />
        

            <!--- populate the new record --->
            
            <CFSET sScheduleID = LEFT(arguments.Photo_ID,5)>
            <CFSET sCameraID = MID(arguments.Photo_ID,6,3)>
            <CFSET sSequence_Num = RIGHT( arguments.Photo_ID,5)>

            <cfset this_path = "/photos/" & sScheduleID & "/" & sCameraID & "/" & sSequence_Num & ".jpg">
              <cfset Event_Photos_Record.SETEVENT_PHOTO_ID("#arguments.PHOTO_ID#">
            <cfset Event_Photos_Record.SETPATH("#trim(this_path)#")>    
            <cfset Event_Photos_Record.SETPHOTO_ENVIRONMENT_ID("#arguments.WATERMARK_ID#")>
            <cfset Event_Photos_Record.SETR_ELAT_ID("#Photo_Loc_R_ELAT_ID#") />
            <cfset Event_Photos_Record.SETEVENT_DAY_ID("#arguments.SUB_EVENT_DATE_ID#") />
            <cfset Event_Photos_Record.SETCLIENT_LICENSE_ID("#efn_client_licenseID#") />
            <cfset Event_Photos_Record.SETSYSTEM_ID("#arguments.CAMERA_ID#")>
            <cfset Event_Photos_Record.SETSEQUENCE_ID("#arguments.sSequence_Num#")>
            <cfset Event_Photos_Record.SETCREATE_DTM(#arguments.CREATE_DTM#) />
            <cfset Event_Photos_Record.SETSAMPLE_FLAG("0")>

            <!--- save the record --->
            <cfset Event_Photos_Record.save() />

            <cfset inserted_id_event_photos = Event_Photos_Record.GETEVENT_PHOTO_ID()>
            
        
                

            <!----------------------------
            ==============================
            FOOTPRINTS INSERT             
            ==============================
            ----------------------------->    

            <!--- <cfset FootprintsItArray =  Event_Photos_Record.GETFOOTPRINTSITERATOR().GetArray()/> --->
            <cfset Footprint =  Event_Photos_Record.getFootprintsIterator().add()/>


            <!--- populate the new record --->
            <cfset Footprint.SETEVENT_TOKEN_ID("#arguments.BARCODE_ID#")>
            <cfset Footprint.SETR_ELAT_ID("#Photo_Loc_R_ELAT_ID#") />
            <cfset Footprint.SETEVENT_DAY_ID("#arguments.SUB_EVENT_DATE_ID#") />
            <cfset Footprint.SETCLIENT_LICENSE_ID("#efn_client_licenseID#") />
            <cfset Footprint.SETSYSTEM_ID("#arguments.CAMERA_ID#")>
            <cfset Footprint.SETCREATE_DTM("#arguments.CREATE_DTM#") />
            <cfset Footprint.SETSAMPLE_FLAG("0")>
            <cfset Footprint.SETIP_ADDRESS("")>

            <!--- save the record --->
            <cfset Footprint.save() />

            <Cfset inserted_id_footprints_loc = Footprint.GETFOOTPRINT_ID()>
        

            <!------------------------
            ==========================
            R_FOOTPRINT_PHOTO INSERT  
            ==========================
             ------------------------>    
            
             <!--- create a Record --->
            <cfset R_Footprint_Photo =  Event_Photos_Record.getR_Footprint_PhotoIterator().add()/>

            <!--- populate the new record --->
            <cfset R_Footprint_Photo.SETEVENT_PHOTO_ID("#inserted_id_event_photos#") />
            <cfset  R_Footprint_Photo.SETFOOTPRINT_ID("#inserted_id_footprints_loc#") />
            <!--- save the record --->
            <cfset R_Footprint_Photo.save() /> -- Reactor for ColdFusion Mailing List -- [email protected] -- Archives at http://www.mail-archive.com/reactor%40doughughes.net/

-- Reactor for ColdFusion Mailing List -- [email protected] -- Archives at http://www.mail-archive.com/reactor%40doughughes.net/ -- Reactor for ColdFusion Mailing List -- [email protected] -- Archives at http://www.mail-archive.com/reactor%40doughughes.net/

Reply via email to