<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: performance of SearchCursor and da.SearchCursor in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/performance-of-searchcursor-and-da-searchcursor/m-p/513367#M40313</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;A few suggestions:&lt;/SPAN&gt;&lt;BR /&gt;&lt;UL&gt;&lt;BR /&gt;&lt;LI&gt;Take out the print statement from inside the loop, that is adding a big overhead.&amp;nbsp; &lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;There's overhead in searchcursor setup, take that out of the timing&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;Pass a field list to arcpy.SearchCursor as you are doing with da.SearchCursor i.e. arcpy.SearchCursor(shp, "", "", "TOWN;TOTAL_SQMI")&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;In case there's some caching going on behind the scenes, put the tests in separate scripts (one that times the arcpy cursor and one that times the da searchcursor)&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;Use the timeit module instead, example below:&lt;/LI&gt;&lt;BR /&gt;&lt;/UL&gt;&lt;PRE class="plain" name="code"&gt;if __name__ == '__main__': &amp;nbsp;&amp;nbsp;&amp;nbsp; import timeit &amp;nbsp;&amp;nbsp;&amp;nbsp; shp = r"D:\TEMP\test.shp" &amp;nbsp;&amp;nbsp;&amp;nbsp; print(timeit.timeit('for row in rows:id = row[0]', &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; number=10,#run loop 10x and return average &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setup='import arcpy; rows = arcpy.da.SearchCursor(r"%s", ["PNTID"])'%shp)) &amp;nbsp;&amp;nbsp;&amp;nbsp; print(timeit.timeit('for row in rows:id = row.getValue("PNTID")', &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; number=10, #run loop 10x and return average &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setup='import arcpy; rows = arcpy.SearchCursor(r"%s", "", "", "PNTID")'%shp))&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;EDIT:Some performance tests on 1000 points, getting value of a single field.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;* Printing field value in for loop&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Not passing field list to arcpy.SearchCursor&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* searchcursor setup is included in timing&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;1. da.SearchCursor:&amp;nbsp;&amp;nbsp;&amp;nbsp; 4.1257697098717925&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;2. arcpy.SearchCursor: 6.2084034116828475&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;* Not printing field value in for loop&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Not passing field list to arcpy.SearchCursor&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* searchcursor setup is included in timing&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;3. da.SearchCursor:&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.07970193086012323&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;4. arcpy.SearchCursor: 2.196710119083276&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;* Not printing field value in for loop&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Not passing field list to arcpy.SearchCursor&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* searchcursor setup is not included in timing&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;5. da.SearchCursor: 0.00738222613381&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;6. arcpy.SearchCursor: 0.160204482864&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;* Not printing field value in for loop&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Passing field list to arcpy.SearchCursor&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* searchcursor setup is not included in timing&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;7. da.SearchCursor: 0.0075200788871&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;8. arcpy.SearchCursor: 0.118301085773&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The above was generated using the following code:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;if __name__ == '__main__': &amp;nbsp;&amp;nbsp;&amp;nbsp; import timeit &amp;nbsp;&amp;nbsp;&amp;nbsp; shp = r"D:\TEMP\test.shp" &amp;nbsp;&amp;nbsp;&amp;nbsp; s=''' rows = arcpy.da.SearchCursor(r"%s", ["PNTID"]) for row in rows: &amp;nbsp;&amp;nbsp;&amp;nbsp; print row[0]'''%shp &amp;nbsp;&amp;nbsp;&amp;nbsp; a=timeit.timeit(s,number=10,setup='import arcpy')&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; s=''' rows = arcpy.SearchCursor(r"%s") for row in rows: &amp;nbsp;&amp;nbsp;&amp;nbsp; print row.getValue("PNTID")'''%shp &amp;nbsp;&amp;nbsp;&amp;nbsp; b=timeit.timeit(s,number=10,setup='import arcpy')&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; s=''' rows = arcpy.da.SearchCursor(r"%s", ["PNTID"]) for row in rows: &amp;nbsp;&amp;nbsp;&amp;nbsp; id=row[0]'''%shp &amp;nbsp;&amp;nbsp;&amp;nbsp; c=timeit.timeit(s,number=10,setup='import arcpy')&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; s=''' rows = arcpy.SearchCursor(r"%s") for row in rows: &amp;nbsp;&amp;nbsp;&amp;nbsp; id=row.getValue("PNTID")'''%shp &amp;nbsp;&amp;nbsp;&amp;nbsp; d=timeit.timeit(s,number=10, setup='import arcpy')&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e=timeit.timeit('for row in rows:id = row[0]', &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; number=10,#run loop 10x and return average &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setup='import arcpy; rows = arcpy.da.SearchCursor(r"%s", ["PNTID"])'%shp) &amp;nbsp;&amp;nbsp;&amp;nbsp; f=timeit.timeit('for row in rows:id = row.getValue("PNTID")', &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; number=10, #run loop 10x and return average &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setup='import arcpy; rows = arcpy.SearchCursor(r"%s")'%shp)&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; g=timeit.timeit('for row in rows:id = row[0]', &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; number=10,#run loop 10x and return average &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setup='import arcpy; rows = arcpy.da.SearchCursor(r"%s", ["PNTID"])'%shp) &amp;nbsp;&amp;nbsp;&amp;nbsp; h=timeit.timeit('for row in rows:id = row.getValue("PNTID")', &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; number=10, #run loop 10x and return average &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setup='import arcpy; rows = arcpy.SearchCursor(r"%s", "", "", "PNTID")'%shp)&amp;nbsp; print '1. da.SearchCursor:',a print '2. arcpy.SearchCursor:',b print '3. da.SearchCursor:',c print '4. arcpy.SearchCursor:',d print '5. da.SearchCursor:',e print '6. arcpy.SearchCursor:',f print '7. da.SearchCursor:',g print '8. arcpy.SearchCursor:',h&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 24 Sep 2013 03:32:39 GMT</pubDate>
    <dc:creator>Luke_Pinner</dc:creator>
    <dc:date>2013-09-24T03:32:39Z</dc:date>
    <item>
      <title>performance of SearchCursor and da.SearchCursor</title>
      <link>https://community.esri.com/t5/python-questions/performance-of-searchcursor-and-da-searchcursor/m-p/513366#M40312</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I set up a comparison between SearchCursor and da.SearchCursor, the code is like this:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;import arcpy, time&amp;nbsp; shp = r"C:\Users\THINK\Desktop\python\Data\TOWNS.shp"&amp;nbsp; #da SearchCursor sTime = time.clock() rows = arcpy.da.SearchCursor(shp, ["TOWN", "TOTAL_SQMI"]) for row in rows: &amp;nbsp;&amp;nbsp;&amp;nbsp; town = row[0] &amp;nbsp;&amp;nbsp;&amp;nbsp; area = row[1] &amp;nbsp;&amp;nbsp;&amp;nbsp; print ("The area of %s is %s sq miles."%(town, area))&amp;nbsp;&amp;nbsp;&amp;nbsp; del row, rows&amp;nbsp; eTime = time.clock() tDiff = eTime - sTime print "da SearchCursor uses %s seconds."%(tDiff)&amp;nbsp;&amp;nbsp;&amp;nbsp; #SearchCursor sTime = time.clock() rows = arcpy.SearchCursor(shp) for row in rows: &amp;nbsp;&amp;nbsp;&amp;nbsp; town = row.getValue("TOWN") &amp;nbsp;&amp;nbsp;&amp;nbsp; area = row.getValue("TOTAL_SQMI") &amp;nbsp;&amp;nbsp;&amp;nbsp; print ("The area of %s is %s sq miles."%(town, area)) del row, rows&amp;nbsp; eTime = time.clock() tDiff = eTime - sTime print "SearchCursor uses %s seconds."%(tDiff)&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I assume da.SearchCursor will be faster but it took more than 2 seconds while SearchCursor finished in just 0.5 second.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Is there something wrong with the test?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 23 Sep 2013 23:56:15 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/performance-of-searchcursor-and-da-searchcursor/m-p/513366#M40312</guid>
      <dc:creator>ZachLiu1</dc:creator>
      <dc:date>2013-09-23T23:56:15Z</dc:date>
    </item>
    <item>
      <title>Re: performance of SearchCursor and da.SearchCursor</title>
      <link>https://community.esri.com/t5/python-questions/performance-of-searchcursor-and-da-searchcursor/m-p/513367#M40313</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;A few suggestions:&lt;/SPAN&gt;&lt;BR /&gt;&lt;UL&gt;&lt;BR /&gt;&lt;LI&gt;Take out the print statement from inside the loop, that is adding a big overhead.&amp;nbsp; &lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;There's overhead in searchcursor setup, take that out of the timing&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;Pass a field list to arcpy.SearchCursor as you are doing with da.SearchCursor i.e. arcpy.SearchCursor(shp, "", "", "TOWN;TOTAL_SQMI")&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;In case there's some caching going on behind the scenes, put the tests in separate scripts (one that times the arcpy cursor and one that times the da searchcursor)&lt;/LI&gt;&lt;BR /&gt;&lt;LI&gt;Use the timeit module instead, example below:&lt;/LI&gt;&lt;BR /&gt;&lt;/UL&gt;&lt;PRE class="plain" name="code"&gt;if __name__ == '__main__': &amp;nbsp;&amp;nbsp;&amp;nbsp; import timeit &amp;nbsp;&amp;nbsp;&amp;nbsp; shp = r"D:\TEMP\test.shp" &amp;nbsp;&amp;nbsp;&amp;nbsp; print(timeit.timeit('for row in rows:id = row[0]', &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; number=10,#run loop 10x and return average &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setup='import arcpy; rows = arcpy.da.SearchCursor(r"%s", ["PNTID"])'%shp)) &amp;nbsp;&amp;nbsp;&amp;nbsp; print(timeit.timeit('for row in rows:id = row.getValue("PNTID")', &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; number=10, #run loop 10x and return average &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setup='import arcpy; rows = arcpy.SearchCursor(r"%s", "", "", "PNTID")'%shp))&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;EDIT:Some performance tests on 1000 points, getting value of a single field.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;* Printing field value in for loop&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Not passing field list to arcpy.SearchCursor&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* searchcursor setup is included in timing&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;1. da.SearchCursor:&amp;nbsp;&amp;nbsp;&amp;nbsp; 4.1257697098717925&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;2. arcpy.SearchCursor: 6.2084034116828475&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;* Not printing field value in for loop&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Not passing field list to arcpy.SearchCursor&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* searchcursor setup is included in timing&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;3. da.SearchCursor:&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.07970193086012323&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;4. arcpy.SearchCursor: 2.196710119083276&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;* Not printing field value in for loop&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Not passing field list to arcpy.SearchCursor&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* searchcursor setup is not included in timing&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;5. da.SearchCursor: 0.00738222613381&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;6. arcpy.SearchCursor: 0.160204482864&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;* Not printing field value in for loop&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* Passing field list to arcpy.SearchCursor&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;* searchcursor setup is not included in timing&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;7. da.SearchCursor: 0.0075200788871&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;8. arcpy.SearchCursor: 0.118301085773&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The above was generated using the following code:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;if __name__ == '__main__': &amp;nbsp;&amp;nbsp;&amp;nbsp; import timeit &amp;nbsp;&amp;nbsp;&amp;nbsp; shp = r"D:\TEMP\test.shp" &amp;nbsp;&amp;nbsp;&amp;nbsp; s=''' rows = arcpy.da.SearchCursor(r"%s", ["PNTID"]) for row in rows: &amp;nbsp;&amp;nbsp;&amp;nbsp; print row[0]'''%shp &amp;nbsp;&amp;nbsp;&amp;nbsp; a=timeit.timeit(s,number=10,setup='import arcpy')&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; s=''' rows = arcpy.SearchCursor(r"%s") for row in rows: &amp;nbsp;&amp;nbsp;&amp;nbsp; print row.getValue("PNTID")'''%shp &amp;nbsp;&amp;nbsp;&amp;nbsp; b=timeit.timeit(s,number=10,setup='import arcpy')&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; s=''' rows = arcpy.da.SearchCursor(r"%s", ["PNTID"]) for row in rows: &amp;nbsp;&amp;nbsp;&amp;nbsp; id=row[0]'''%shp &amp;nbsp;&amp;nbsp;&amp;nbsp; c=timeit.timeit(s,number=10,setup='import arcpy')&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; s=''' rows = arcpy.SearchCursor(r"%s") for row in rows: &amp;nbsp;&amp;nbsp;&amp;nbsp; id=row.getValue("PNTID")'''%shp &amp;nbsp;&amp;nbsp;&amp;nbsp; d=timeit.timeit(s,number=10, setup='import arcpy')&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; e=timeit.timeit('for row in rows:id = row[0]', &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; number=10,#run loop 10x and return average &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setup='import arcpy; rows = arcpy.da.SearchCursor(r"%s", ["PNTID"])'%shp) &amp;nbsp;&amp;nbsp;&amp;nbsp; f=timeit.timeit('for row in rows:id = row.getValue("PNTID")', &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; number=10, #run loop 10x and return average &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setup='import arcpy; rows = arcpy.SearchCursor(r"%s")'%shp)&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; g=timeit.timeit('for row in rows:id = row[0]', &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; number=10,#run loop 10x and return average &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setup='import arcpy; rows = arcpy.da.SearchCursor(r"%s", ["PNTID"])'%shp) &amp;nbsp;&amp;nbsp;&amp;nbsp; h=timeit.timeit('for row in rows:id = row.getValue("PNTID")', &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; number=10, #run loop 10x and return average &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setup='import arcpy; rows = arcpy.SearchCursor(r"%s", "", "", "PNTID")'%shp)&amp;nbsp; print '1. da.SearchCursor:',a print '2. arcpy.SearchCursor:',b print '3. da.SearchCursor:',c print '4. arcpy.SearchCursor:',d print '5. da.SearchCursor:',e print '6. arcpy.SearchCursor:',f print '7. da.SearchCursor:',g print '8. arcpy.SearchCursor:',h&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 24 Sep 2013 03:32:39 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/performance-of-searchcursor-and-da-searchcursor/m-p/513367#M40313</guid>
      <dc:creator>Luke_Pinner</dc:creator>
      <dc:date>2013-09-24T03:32:39Z</dc:date>
    </item>
    <item>
      <title>Re: performance of SearchCursor and da.SearchCursor</title>
      <link>https://community.esri.com/t5/python-questions/performance-of-searchcursor-and-da-searchcursor/m-p/513368#M40314</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;This is great response, thanks!&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 24 Sep 2013 12:28:18 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/performance-of-searchcursor-and-da-searchcursor/m-p/513368#M40314</guid>
      <dc:creator>ZachLiu1</dc:creator>
      <dc:date>2013-09-24T12:28:18Z</dc:date>
    </item>
    <item>
      <title>Re: performance of SearchCursor and da.SearchCursor</title>
      <link>https://community.esri.com/t5/python-questions/performance-of-searchcursor-and-da-searchcursor/m-p/513369#M40315</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I would also recommend repeating a bunch of times and averaging - with (non-Arc) database applications I have seen a lot of variability.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Cursor setup time should be noted as well! Most of the time users are probably doing small calculations, if da.SearchCursor takes a lot more time to set up, the increased speed of its operation may well be pointless...&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 25 Sep 2013 21:39:00 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/performance-of-searchcursor-and-da-searchcursor/m-p/513369#M40315</guid>
      <dc:creator>StacyRendall1</dc:creator>
      <dc:date>2013-09-25T21:39:00Z</dc:date>
    </item>
    <item>
      <title>Re: performance of SearchCursor and da.SearchCursor</title>
      <link>https://community.esri.com/t5/python-questions/performance-of-searchcursor-and-da-searchcursor/m-p/513370#M40316</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;The &lt;/SPAN&gt;&lt;A href="http://docs.python.org/2/library/timeit.html" rel="nofollow noopener noreferrer" target="_blank"&gt;timeit&lt;/A&gt;&lt;SPAN&gt; code I posted runs each loop 10 times and prints the average - i.e. "number=10". The timeit default number of repetitions is 10,000. I just left it at 10 as the first set took so long.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;SearchCursor setup overhead is relevant, but not when timing loops, it should be timed separately.&amp;nbsp; Anyway, da searchcursors setup is much faster than arcpy searchcursors&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;if __name__ == '__main__':
&amp;nbsp;&amp;nbsp;&amp;nbsp; import timeit
&amp;nbsp;&amp;nbsp;&amp;nbsp; shp = r"D:\TEMP\test.shp"

&amp;nbsp;&amp;nbsp;&amp;nbsp; s='rows = arcpy.da.SearchCursor(r"%s", ["PNTID"])'%shp
&amp;nbsp;&amp;nbsp;&amp;nbsp; c=timeit.timeit(s,number=100,setup='import arcpy')

&amp;nbsp;&amp;nbsp;&amp;nbsp; s='rows = arcpy.SearchCursor(r"%s", "", "", "PNTID")'%shp
&amp;nbsp;&amp;nbsp;&amp;nbsp; d=timeit.timeit(s,number=100,setup='import arcpy')

&amp;nbsp;&amp;nbsp;&amp;nbsp; print '1. da.SearchCursor:',c
&amp;nbsp;&amp;nbsp;&amp;nbsp; print '2. arcpy.SearchCursor:',d

1. da.SearchCursor: 0.032812795193
2. arcpy.SearchCursor: 0.497164226788&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 22:27:08 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/performance-of-searchcursor-and-da-searchcursor/m-p/513370#M40316</guid>
      <dc:creator>Luke_Pinner</dc:creator>
      <dc:date>2021-12-11T22:27:08Z</dc:date>
    </item>
  </channel>
</rss>

