ฉันใช้ตัวอย่างที่มี 1 ล้านคะแนนที่สร้างแบบสุ่มภายในของฐานข้อมูลไฟล์ ที่แนบมาที่นี่
นี่คือรหัสบางส่วนเพื่อให้เราเริ่มต้น:
import time
import arcpy
arcpy.env.workspace = "C:\CountTest.gdb"
time.sleep(5) # Let the cpu/ram calm before proceeding!
"""Method 1"""
StartTime = time.clock()
with arcpy.da.SearchCursor("RandomPoints", ["OBJECTID"]) as cursor:
rows = {row[0] for row in cursor}
count = 0
for row in rows:
count += 1
EndTime = time.clock()
print "Finished in %s seconds" % (EndTime - StartTime)
print "%s features" % count
time.sleep(5) # Let the cpu/ram calm before proceeding!
"""Method 2"""
StartTime2 = time.clock()
arcpy.MakeTableView_management("RandomPoints", "myTableView")
count = int(arcpy.GetCount_management("myTableView").getOutput(0))
EndTime2 = time.clock()
print "Finished in %s seconds" % (EndTime2 - StartTime2)
print "%s features" % count
และผลเบื้องต้น:
>>>
Finished in 6.75540050237 seconds
1000000 features
Finished in 0.801474780332 seconds
1000000 features
>>> =============================== RESTART ===============================
>>>
Finished in 6.56968596918 seconds
1000000 features
Finished in 0.812731769756 seconds
1000000 features
>>> =============================== RESTART ===============================
>>>
Finished in 6.58207512487 seconds
1000000 features
Finished in 0.841122157314 seconds
1000000 features
ลองนึกภาพชุดข้อมูลที่มีขนาดใหญ่และซับซ้อนกว่านี้ SearchCursor จะรวบรวมข้อมูลอย่างไม่มีกำหนด
ฉันไม่พอใจกับผลลัพธ์ทั้งหมดอย่างไรก็ตามโมดูล DataAccess กำลังถูกใช้อย่างกว้างขวางในแวดวงการพัฒนา GIS ของเรา ฉันต้องการสร้างคำจำกัดความฟังก์ชันของเราใหม่ด้วยโมดูลนี้เนื่องจากมีความยืดหยุ่นมากกว่าเมธอด MakeTableView + GetCount