Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Changes In Branch memoryUsage Excluding Merge-Ins
This is equivalent to a diff from 8130180a1d to 2000da5b93
2015-10-19
| ||
17:23 | Add memory usage stress test. check-in: 67d28724d6 user: mistachkin tags: trunk | |
17:22 | Further enhancements to the memory usage stress test. Closed-Leaf check-in: 2000da5b93 user: mistachkin tags: memoryUsage | |
05:16 | Fixes and tweaks to the previous check-in. check-in: 9a14ecd4bc user: mistachkin tags: memoryUsage | |
04:50 | Initial work on memory usage stress test. check-in: 7dd94a2532 user: mistachkin tags: memoryUsage | |
02:15 | Update Eagle script library in externals to the latest trunk code. check-in: 8130180a1d user: mistachkin tags: trunk | |
2015-10-18
| ||
21:45 | Update version history docs. check-in: 3efbff1ab2 user: mistachkin tags: trunk | |
Added Tests/memory.eagle.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 | ############################################################################### # # memory.eagle -- # # Written by Joe Mistachkin. # Released to the public domain, use at your own risk! # ############################################################################### package require Eagle package require Eagle.Library package require Eagle.Test runTestPrologue ############################################################################### package require System.Data.SQLite.Test runSQLiteTestPrologue ############################################################################### # # NOTE: Report before test, before shutdown. # checkForSQLiteDirectories $test_channel getSQLiteHandleCounts $test_channel reportSQLiteResources $test_channel ############################################################################### # # NOTE: Make sure that SQLite core library is completely shutdown prior to # starting any of the tests in this file. # shutdownSQLite $test_channel ############################################################################### # # NOTE: Report before test, after shutdown. # checkForSQLiteDirectories $test_channel getSQLiteHandleCounts $test_channel reportSQLiteResources $test_channel ############################################################################### runTest {test memory-1.1 {SQLiteDataReader memory testing} -setup { setupMemoryCounters counter reportMemoryCounters $test_channel counter initial setupDb [set fileName $test_repository_file] \ "" "" "" "" "Read Only=True" false false } -body { set connection [getDbConnection] set sql "SELECT rid, rcvid, size, uuid, content FROM blob ORDER BY rid;" set working(rowCount) 0 set working(contentLength) 0 set working(time) [time { set dataReader [sql execute -execute reader -format datareader \ -alias $db $sql] while {[$dataReader Read]} { incr working(rowCount) set working(rid) [$dataReader GetValue \ [$dataReader GetOrdinal rid]] set working(rcvid) [$dataReader GetValue \ [$dataReader GetOrdinal rcvid]] set working(size) [$dataReader GetValue \ [$dataReader GetOrdinal size]] set working(uuid) [$dataReader GetValue \ [$dataReader GetOrdinal uuid]] set working(content) [$dataReader -create -alias GetValue \ [$dataReader GetOrdinal content]] incr working(contentLength) [$working(content) Length] set working(counter1Cur) [$counter(1) RawValue] set working(counter2Cur) [$counter(2) RawValue] set working(counter3Cur) [$counter(3) RawValue] if {![info exists working(counter1Max)] || \ $working(counter1Cur) > $working(counter1Max)} then { set working(counter1Max) $working(counter1Cur) reportMemoryCounters $test_channel counter current cleanupMemory connection } if {![info exists working(counter2Max)] || \ $working(counter2Cur) > $working(counter2Max)} then { set working(counter2Max) $working(counter2Cur) reportMemoryCounters $test_channel counter current cleanupMemory connection } if {![info exists working(counter3Max)] || \ $working(counter3Cur) > $working(counter3Max)} then { set working(counter3Max) $working(counter3Cur) reportMemoryCounters $test_channel counter current cleanupMemory connection } } }] reportMemoryCounters $test_channel counter final tputs $test_channel [appendArgs \ "---- found " $working(rowCount) " rows with " \ $working(contentLength) " bytes of content in " \ $working(time) \n] } -cleanup { freeDbConnection unset -nocomplain dataReader connection cleanupDb $fileName db true false false unset -nocomplain working sql counter db fileName } -constraints {eagle command.object monoBug28 command.sql compile.DATA SQLite\ System.Data.SQLite fossil_repository_file variable_test_repository_file} \ -result {}} ############################################################################### # # NOTE: Report after test. # checkForSQLiteDirectories $test_channel getSQLiteHandleCounts $test_channel reportSQLiteResources $test_channel ############################################################################### runSQLiteTestEpilogue runTestEpilogue |
Changes to lib/System.Data.SQLite/common.eagle.
︙ | ︙ | |||
2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 | # NOTE: The file does not exist, success! # set code 0 } return $code } proc collectGarbage { channel {milliseconds 1000} {quiet true} } { if {[haveSQLiteObjectCommand]} then { if {[catch { object invoke GC GetTotalMemory false } result] == 0} then { if {!$quiet} then { | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 | # NOTE: The file does not exist, success! # set code 0 } return $code } proc cleanupMemory { varName {quiet false} } { if {[haveSQLiteObjectCommand] && \ [string length $varName] > 0} then { # # NOTE: Refer to the specified variable (e.g. "connection") in the # context of our caller. The opaque object handle for an # ADO.NET connection previously returned by [getDbConnection] # should be stored there. # upvar 1 $varName connection if {[catch { object invoke $connection ReleaseMemory } result]} then { if {!$quiet} then { tputs $::test_channel [appendArgs \ "==== WARNING: failed to release database memory, error: " \ \n\t $result \n] } } } if {[llength [info commands debug]] > 0} then { if {[catch { uplevel 1 [list debug purge] } result]} then { if {!$quiet} then { tputs $::test_channel [appendArgs \ "==== WARNING: failed to purge call frame, error: " \ \n\t $result \n] } } if {[catch { uplevel 1 [list debug cleanup] } result]} then { if {!$quiet} then { tputs $::test_channel [appendArgs \ "==== WARNING: failed to cleanup interpreter, error: " \ \n\t $result \n] } } if {[catch { uplevel 1 [list debug collect] } result]} then { if {!$quiet} then { tputs $::test_channel [appendArgs \ "==== WARNING: failed to collect garbage, error: " \ \n\t $result \n] } } } } proc setupMemoryCounters { varName } { if {[haveSQLiteObjectCommand]} then { upvar 1 $varName counter set counter(1) [object create -alias \ System.Diagnostics.PerformanceCounter Process \ "Working Set" [file rootname [file tail $::bin_file]]] set counter(2) [object create -alias \ System.Diagnostics.PerformanceCounter Process \ "Working Set Peak" [file rootname [file tail $::bin_file]]] set counter(3) [object create -alias \ System.Diagnostics.PerformanceCounter Process \ "Private Bytes" [file rootname [file tail $::bin_file]]] } return "" } proc reportMemoryCounters { channel varName prefix } { if {[haveSQLiteObjectCommand]} then { upvar 1 $varName counter tputs $channel [appendArgs \ "---- " $prefix " counter \"" \ [object invoke $counter(1) CounterName] "\" value is " \ [object invoke $counter(1) RawValue] \n] tputs $channel [appendArgs \ "---- " $prefix " counter \"" \ [object invoke $counter(2) CounterName] "\" value is " \ [object invoke $counter(2) RawValue] \n] tputs $channel [appendArgs \ "---- " $prefix " counter \"" \ [object invoke $counter(3) CounterName] "\" value is " \ [object invoke $counter(3) RawValue] \n] } } proc collectGarbage { channel {milliseconds 1000} {quiet true} } { if {[haveSQLiteObjectCommand]} then { if {[catch { object invoke GC GetTotalMemory false } result] == 0} then { if {!$quiet} then { |
︙ | ︙ |