Files correlati : ba1 Ricompilazione Demo : [ ] Commento : Nella gestione utente NON rende piu' obbligatoria la password sui gruppi (campo inaccessibile) git-svn-id: svn://10.65.10.50/trunk@15200 c028cbd2-c16b-5b4b-a496-9718f37d4682
182 lines
3.9 KiB
C++
Executable File
182 lines
3.9 KiB
C++
Executable File
#include <applicat.h>
|
|
#include <progind.h>
|
|
#include <recarray.h>
|
|
#include <relation.h>
|
|
|
|
///////////////////////////////////////////////////////////
|
|
// Testfile
|
|
///////////////////////////////////////////////////////////
|
|
|
|
class TTest_application : public TSkeleton_application
|
|
{
|
|
protected:
|
|
void test1();
|
|
void test2();
|
|
void test3();
|
|
void test4();
|
|
|
|
clock_t start_timer() const;
|
|
|
|
public:
|
|
virtual void main_loop();
|
|
};
|
|
|
|
clock_t TTest_application::start_timer() const
|
|
{
|
|
clock_t t = clock();
|
|
while (clock() == t);
|
|
t = clock();
|
|
return t;
|
|
}
|
|
|
|
void TTest_application::test1()
|
|
{
|
|
TLocalisamfile tab(LF_COMUNI);
|
|
|
|
clock_t start;
|
|
TRecnotype r = 0;
|
|
TString80 msg;
|
|
{
|
|
const int times = 10;
|
|
TProgind p(times, TR("Lettura file comuni"), TRUE, TRUE);
|
|
start = start_timer();
|
|
for (int i = 0; i < times; i++)
|
|
{
|
|
for (tab.first(); tab.good(); tab.next())
|
|
r++;
|
|
|
|
msg.format("%ld records %ld msec", r, clock() - start);
|
|
p.addstatus(1);
|
|
p.set_text(msg);
|
|
if (p.iscancelled())
|
|
break;
|
|
}
|
|
}
|
|
const clock_t t = clock() - start;
|
|
msg.format("Lettura file comuni\n"
|
|
"%ld records in %ld msec\n%lg records per sec", r, t, 1000.0*r/t);
|
|
message_box(msg);
|
|
}
|
|
|
|
void TTest_application::test2()
|
|
{
|
|
TRelation rel(LF_COMUNI);
|
|
TCursor tab(&rel);
|
|
|
|
const TRecnotype n = tab.items();
|
|
|
|
tab.freeze();
|
|
|
|
clock_t start;
|
|
TRecnotype r = 0;
|
|
TString80 msg;
|
|
{
|
|
const int times = 10;
|
|
TProgind p(times, TR("Lettura cursore comuni"), TRUE, TRUE);
|
|
start = start_timer();
|
|
for (int i = 0; i < times; i++)
|
|
{
|
|
for (tab = 0; tab.pos() < n; ++tab)
|
|
r++;
|
|
|
|
msg.format("Lettura cursore comuni\n%ld records %ld msec", r, clock() - start);
|
|
p.addstatus(1);
|
|
p.set_text(msg);
|
|
if (p.iscancelled())
|
|
break;
|
|
}
|
|
}
|
|
const clock_t t = clock() - start;
|
|
msg.format("%ld records in %ld msec\n%lg records per sec\n",
|
|
r, t, 1000.0*r/t);
|
|
message_box(msg);
|
|
}
|
|
|
|
void TTest_application::test3()
|
|
{
|
|
TRelation rel(LF_COMUNI);
|
|
TSorted_cursor tab(&rel, "CAPCOM|DENCOM");
|
|
|
|
clock_t istart = start_timer();
|
|
const TRecnotype n = tab.items();
|
|
clock_t istop = clock() - istart;
|
|
|
|
tab.freeze();
|
|
|
|
clock_t start;
|
|
TRecnotype r = 0;
|
|
TString256 msg;
|
|
{
|
|
const int times = 10;
|
|
TProgind p(times, TR("Lettura cursore C.A.P."), TRUE, TRUE);
|
|
start = start_timer();
|
|
for (int i = 0; i < times; i++)
|
|
{
|
|
for (tab = 0; tab.pos() < n; ++tab)
|
|
r++;
|
|
|
|
msg.format("Lettura cursore C.A.P.\n%ld records %ld msec", r, clock() - start);
|
|
p.addstatus(1);
|
|
p.set_text(msg);
|
|
if (p.iscancelled())
|
|
break;
|
|
}
|
|
}
|
|
const clock_t t = clock() - start;
|
|
msg.format("%ld records in %ld msec\n%lg records per sec\n"
|
|
"%ld msec for initialization",
|
|
r, t, 1000.0*r/t, istop);
|
|
message_box(msg);
|
|
}
|
|
|
|
void TTest_application::test4()
|
|
{
|
|
long r = 0;
|
|
srand(r);
|
|
TString8 cod;
|
|
|
|
clock_t start;
|
|
{
|
|
const int times = 10;
|
|
TProgind p(times, TR("Lettura casuale tramite cache"), TRUE, TRUE);
|
|
cache().get(LF_COMUNI, cod); // Inizializzazione
|
|
start = start_timer();
|
|
for (int i = 0; i < times; i++)
|
|
{
|
|
for (long j = 0; j < 10000; j++)
|
|
{
|
|
cod.format(" |%c%03d", 'A'+rand()%8, rand() % 1000);
|
|
cache().get(LF_COMUNI, cod);
|
|
r++;
|
|
}
|
|
p.addstatus(1);
|
|
if (p.iscancelled())
|
|
break;
|
|
}
|
|
}
|
|
|
|
const clock_t t = clock() - start;
|
|
TString msg;
|
|
msg.format("%ld records in %ld msec\n%lg records per sec", r, t, 1000.0*r/t);
|
|
message_box(msg);
|
|
}
|
|
|
|
void TTest_application::main_loop()
|
|
{
|
|
test1();
|
|
test2();
|
|
test3();
|
|
test4();
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////
|
|
|
|
|
|
int ba1200(int argc, char** argv)
|
|
{
|
|
TTest_application a;
|
|
a.run(argc, argv, TR("Test File"));
|
|
return 0;
|
|
}
|
|
|