위의 답변 에서 솔루션을 테스트했으며 실제 데이터에서 그 차이는 무시할 수 있습니다. 다른 답변의 결과와는 달리, ArcMap의 arcpy.MakeTableView_management 및 arcpy.da.SearchCursor 시간은 동일합니다.
쿼리 유무에 관계없이 변형을 테스트했으며 쿼리 버전 코드 및 최종 측정 결과를 아래에서 참조하십시오
@staticmethod
def query_features(feature_class, query):
# Method 1
time.sleep(5) # Let the cpu/ram calm before proceeding!
start_time = time.clock()
count = len(list(i for i in arcpy.da.SearchCursor(feature_class, ["OBJECTID"], query)))
end_time = time.clock()
arcpy.AddMessage("Method 1 finished in {} seconds".format((end_time - start_time)))
arcpy.AddMessage("{} features".format(count))
# Method 2
time.sleep(5) # Let the cpu/ram calm before proceeding!
start_time = time.clock()
arcpy.MakeTableView_management(feature_class, "myTableView", query)
count = int(arcpy.GetCount_management("myTableView").getOutput(0))
end_time = time.clock()
arcpy.AddMessage("Method 2 in {} seconds".format((end_time - start_time)))
arcpy.AddMessage("{} features".format(count))
아래 결과 :
No query:
Method 1 finished in 5.3616442 seconds
804140 features
Method 2 in 4.2843138 seconds
804140 features
Many results query:
Method 1 finished in 12.7124766 seconds
518852 features
Method 2 in 12.1396602 seconds
518852 features
Few results query:
Method 1 finished in 11.1421476 seconds
8 features
Method 2 in 11.2232503 seconds
8 features