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
naviserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/naviserver-devel

Reply via email to