mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-31 06:12:22 -06:00
reorganizing repo
git-svn-id: svn://ultimatepp.org/upp/trunk@9206 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
7d17505cfe
commit
e3e8d627f5
3840 changed files with 0 additions and 1161578 deletions
|
|
@ -1,168 +0,0 @@
|
|||
#include <Core/Core.h>
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define N 1
|
||||
#else
|
||||
#define N 500000000
|
||||
#endif
|
||||
|
||||
namespace Upp {
|
||||
#include <Core/HeapImp.h>
|
||||
};
|
||||
|
||||
using namespace Upp;
|
||||
|
||||
Atomic x;
|
||||
volatile int y;
|
||||
String t;
|
||||
|
||||
void TestThread(const char *q)
|
||||
{
|
||||
String s = q;
|
||||
for(int i = 0; i < N; i++)
|
||||
String t = s;
|
||||
}
|
||||
|
||||
void Test(String s)
|
||||
{
|
||||
Thread a, b;
|
||||
a.Run(callback1(TestThread, ~s));
|
||||
b.Run(callback1(TestThread, ~s));
|
||||
a.Wait();
|
||||
b.Wait();
|
||||
}
|
||||
|
||||
void TestThreadMA()
|
||||
{
|
||||
String s = "01234567890123456789";
|
||||
for(int i = 0; i < N; i++) {
|
||||
volatile qword *d = (qword *)MemoryAlloc32();
|
||||
const qword *q = (const qword *)~s;
|
||||
d[0] = q[0]; d[1] = q[1]; d[2] = q[2]; d[3] = q[3];
|
||||
MemoryFree32((void *)d);
|
||||
}
|
||||
}
|
||||
|
||||
volatile int cnt;
|
||||
|
||||
void TestThreadINC()
|
||||
{
|
||||
for(int i = 0; i < N; i++)
|
||||
cnt++;
|
||||
}
|
||||
|
||||
void TestThreadAtomicINC()
|
||||
{
|
||||
for(int i = 0; i < N; i++)
|
||||
AtomicInc(x);
|
||||
}
|
||||
|
||||
void TestThreadRD()
|
||||
{
|
||||
int q = 0;
|
||||
for(int i = 0; i < N; i++)
|
||||
q += cnt;
|
||||
}
|
||||
|
||||
CONSOLE_APP_MAIN
|
||||
{
|
||||
String x = "01234567890123456789";
|
||||
|
||||
{
|
||||
RTIMING("MA ST");
|
||||
TestThreadMA();
|
||||
}
|
||||
{
|
||||
RTIMING("MA MT");
|
||||
Thread a, b;
|
||||
a.Run(callback(TestThreadMA));
|
||||
b.Run(callback(TestThreadMA));
|
||||
a.Wait();
|
||||
b.Wait();
|
||||
}
|
||||
{
|
||||
RTIMING("INC ST");
|
||||
TestThreadINC();
|
||||
}
|
||||
{
|
||||
RTIMING("INC MT");
|
||||
Thread a, b;
|
||||
a.Run(callback(TestThreadINC));
|
||||
b.Run(callback(TestThreadINC));
|
||||
a.Wait();
|
||||
b.Wait();
|
||||
}
|
||||
{
|
||||
RTIMING("AtomicINC ST");
|
||||
TestThreadAtomicINC();
|
||||
}
|
||||
{
|
||||
RTIMING("AtomicINC MT");
|
||||
Thread a, b;
|
||||
a.Run(callback(TestThreadAtomicINC));
|
||||
b.Run(callback(TestThreadAtomicINC));
|
||||
a.Wait();
|
||||
b.Wait();
|
||||
}
|
||||
{
|
||||
RTIMING("RD ST");
|
||||
TestThreadRD();
|
||||
}
|
||||
{
|
||||
RTIMING("RD MT");
|
||||
Thread a, b;
|
||||
a.Run(callback(TestThreadRD));
|
||||
b.Run(callback(TestThreadRD));
|
||||
a.Wait();
|
||||
b.Wait();
|
||||
}
|
||||
{
|
||||
RTIMING("20 ST");
|
||||
TestThread(~x);
|
||||
}
|
||||
{
|
||||
RTIMING("20 MT");
|
||||
Test(x);
|
||||
}
|
||||
x << x;
|
||||
{
|
||||
RTIMING("40 single");
|
||||
TestThread(x);
|
||||
}
|
||||
{
|
||||
RTIMING("40");
|
||||
Test(x);
|
||||
}
|
||||
x << x;
|
||||
{
|
||||
RTIMING("80 single");
|
||||
TestThread(x);
|
||||
}
|
||||
{
|
||||
RTIMING("80");
|
||||
Test(x);
|
||||
}
|
||||
return;
|
||||
/*
|
||||
Atomic *x = new Atomic;
|
||||
{
|
||||
RTIMING("Atomic");
|
||||
for(int i = 0; i < N; i++)
|
||||
AtomicInc(*x);
|
||||
}
|
||||
int *p = new int;
|
||||
{
|
||||
RTIMING("Normal");
|
||||
for(int i = 0; i < N; i++)
|
||||
*p++;
|
||||
}
|
||||
{
|
||||
RTIMING("Smart");
|
||||
for(int i = 0; i < N; i++) {
|
||||
if(IsInHeap(p))
|
||||
*p++;
|
||||
}
|
||||
}
|
||||
delete p;
|
||||
*/
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue