diff --git a/ba/ba883.cpp b/ba/ba883.cpp index c0606f52a..92ab08764 100755 --- a/ba/ba883.cpp +++ b/ba/ba883.cpp @@ -88,7 +88,7 @@ bool TTest_application::menu(MENU_TAG) class TBenchmark_application : public TApplication { TIndwin* _iw; - clock_t _timer; + clock_t _timer_start; protected: virtual bool create(); @@ -100,6 +100,7 @@ protected: void stop_test(); void test_relation_scan(); + void test_cursor_scan(); public: TBenchmark_application() : _iw(NULL) { } @@ -126,43 +127,48 @@ bool TBenchmark_application::destroy() bool TBenchmark_application::menu(MENU_TAG) { TString test = argv(1); test.upper(); - const bool test_all = test.find('A') >= 0; + const bool test_all = test.find('*') >= 0; if (test_all || test.find('R') >= 0) test_relation_scan(); + if (test_all || test.find('C') >= 0) + test_cursor_scan(); + return TRUE; } void TBenchmark_application::initializing() { CHECK(_iw == NULL, "Benchmark already in progress"); - _iw = new TIndwin(48, "Initializing ...", FALSE, TRUE, 48); + _iw = new TIndwin(48, "Initializing ...", TRUE, FALSE, 48); } void TBenchmark_application::start_test(const char* text) { CHECK(_iw != NULL, "Benchmark not started yet"); _iw->set_text(text); + do_events(); - clock_t _timer = clock(), t; + clock_t t; + _timer_start = clock(); do { t = clock(); - } while (t == _timer); - _timer = t; + } while (t == _timer_start); + _timer_start = t; } void TBenchmark_application::stop_test() { CHECK(_iw != NULL, "Benchmark not started yet"); - const clock_t t = clock() - _timer; + const clock_t t = clock() - _timer_start; const double s = t / CLOCKS_PER_SEC; TString80 msg; msg.format("Time to complete: %.1lf s", s); _iw->set_text(msg); - while (!_iw->is_cancelled()) + while (!_iw->iscancelled()) do_events(); delete _iw; @@ -177,7 +183,7 @@ void TBenchmark_application::test_relation_scan() comuni.add("%UID", "CODTAB=UFFIIDD1"); comuni.first(); - start_test("Scansione COMUNI+%UID"); + start_test("Scansione relazione COMUNI+%UID"); while (!comuni.eof()) comuni.next(); @@ -185,35 +191,41 @@ void TBenchmark_application::test_relation_scan() stop_test(); } +void TBenchmark_application::test_cursor_scan() +{ + initializing(); + + TRelation comuni(LF_COMUNI); + comuni.add("%UID", "CODTAB=UFFIIDD1"); + + TCursor cur(&comuni); + cur = 0L; + + start_test("Scansione cursore COMUNI+%UID"); + + while (cur.ok()) + ++cur; + + stop_test(); +} + + /////////////////////////////////////////////////////////// int main(int argc, char** argv) { TApplication::check_parameters(argc, argv); - if (argc > 1 && *argv[0] == '-') + if (argc > 1 && *argv[1] == '-') { TBenchmark_application bma; - bma.run(); + bma.run(argc, argv, "Benchmark"); return 0; } if (argc < 3) { - TFilename n; - if (argc == 1) - { - TMask m("Inserire il nome della maschera", 1, 42, 4); - m.add_string(101, 0, "", 1, 1, 40); - m.field(101).check_type(CHECK_REQUIRED); - m.add_button(DLG_OK, 0, "", -12, -1, 10, 2); - m.add_button(DLG_CANCEL, 0, "", -22, -1, 10, 2); - if (m.run() == K_ENTER) - n = m.get(101); - } - else - n = argv[1]; - + TFilename n = argv[1]; if (n.not_empty()) { TTest_application a(n);