Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const size_t ArraySize = 1000;
- class Ball
- {
- public:
- float x,y,z;
- Ball():
- x(0),
- y(0),
- z(0)
- {
- }
- void Update()
- {
- x += 5;
- y += 5;
- z += 5;
- }
- };
- std::vector<Ball> g_balls(ArraySize);
- class Balls
- {
- public:
- std::vector<float> x;
- std::vector<float> y;
- std::vector<float> z;
- Balls():
- x(ArraySize,0),
- y(ArraySize,0),
- z(ArraySize,0)
- {
- }
- void Update()
- {
- const size_t num = x.size();
- if(num == 0)
- {
- return;
- }
- const float* lastX = &x[num - 1];
- float* pX = &x[0];
- float* pY = &y[0];
- float* pZ = &z[0];
- for( ; pX <= lastX; ++pX, ++pY, ++pZ)
- {
- *pX += 5;
- *pY += 5;
- *pZ += 5;
- }
- }
- };
- int main()
- {
- Balls balls;
- Timer time1;
- time1.Start();
- balls.Update();
- time1.Stop();
- Timer time2;
- time2.Start();
- const size_t arrSize = g_balls.size();
- if(arrSize > 0)
- {
- const Ball* lastBall = &g_balls[arrSize - 1];
- Ball* pBall = &g_balls[0];
- for( ; pBall <= lastBall; ++pBall)
- {
- pBall->Update();
- }
- }
- time2.Stop();
- printf("Data Oriented design time: %fn",time1.Get_Microseconds());
- printf("OOB oriented design time: %fn",time2.Get_Microseconds());
- return 0;
- }
- const float* lastX = &x[num - 1];//remember, x is a std::vector of floats
- float* pX = &x[0];//remember, x is a std::vector of floats
- float* pY = &y[0];//remember, y is a std::vector of floats
- float* pZ = &z[0];//remember, z is a std::vector of floats
- for( ; pX <= lastX; ++pX, ++pY, ++pZ)
- {
- *pX += 5;
- *pY += 5;
- *pZ += 5;
- }
- class IPixel
- {
- public:
- virtual ~IPixel() {}
- ...
- };
- class IImage
- {
- public:
- virtual ~IImage() {}
- ...
- };
Add Comment
Please, Sign In to add comment