If someone want to make experiments, here is the code used for testing
-gn
set ::sql {select * from acs_objects limit 10000}
proc dbi_dicts1 {cols rows} {
set dicts {}
foreach $cols $rows {
set dict ""
foreach __c $cols {
lappend dict $__c [set $__c]
}
lappend dicts $dict
}
return $dicts
}
proc dbi_dicts2 {cols rows} {
set dicts {}
foreach $cols $rows {
foreach __c $cols {
dict set dict $__c [set $__c]
}
lappend dicts $dict
}
return $dicts
}
proc dbi_sets {cols rows} {
set sets {}
foreach $cols $rows {
set dict ""
foreach __c $cols {
lappend dict $__c [set $__c]
}
lappend sets [ns_set create r {*}$dict]
}
return $sets
}
proc p1 {} {
set sum 0
set count 0
set rows [dbi_rows -columns cols -max 1000000 -- $::sql]
foreach d [dbi_dicts1 $cols $rows] {
incr sum [dict get $d object_id]
incr count
}
return [list $count $sum]
}
proc p2 {} {
set sum 0
set count 0
set rows [dbi_rows -columns cols -max 1000000 -- $::sql]
foreach d [dbi_dicts2 $cols $rows] {
incr sum [dict get $d object_id]
incr count
}
return [list $count $sum]
}
proc p3 {} {
set sum 0
set count 0
foreach row [dbi_rows -result dicts -max 1000000 -- $::sql] {
incr sum [dict get $row object_id]
incr count
}
return [list $count $sum]
}
proc p4 {} {
set sum 0
set count 0
set rows [dbi_rows -columns cols -max 1000000 -- $::sql]
foreach row [dbi_sets $cols $rows] {
incr sum [ns_set get $row object_id]
incr count
}
return [list $count $sum]
}
proc p5 {} {
set sum 0
set count 0
foreach dict [dbi_rows -result dicts -max 1000000 -- $::sql] {
set row [ns_set create x {*}$dict]
incr sum [ns_set get $row object_id]
incr count
}
return [list $count $sum]
}
proc p6 {} {
set sum 0
set count 0
foreach row [dbi_rows -result sets -max 1000000 -- $::sql] {
incr sum [ns_set get $row object_id]
incr count
}
return [list $count $sum]
}
------------------------------------------------------------------------------
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121051231&iu=/4140/ostg.clktrk
_______________________________________________
naviserver-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/naviserver-devel