25.08.2010, 19:53
(
Последний раз редактировалось wups; 25.08.2010 в 20:09.
)
Ok, I dont know if i did i wright, but here are the results:
Code:

EDIT: New test:
Code:
pawn Код:
#include <a_samp>
#include <foreach>
forward OneSecTimer();
#define ForEachPlayer(%0) for(new index_%0=0, %0=ConnectedPlayerList[0]; index_%0<ConnectedPlayers; index_%0++, %0=ConnectedPlayerList[index_%0])
new item1[MAX_PLAYERS][10000],item2[MAX_PLAYERS][10000];
new ConnectedPlayers;
new ConnectedPlayerList[MAX_PLAYERS+1];//Loop would bug when server is full D:
main()
{
print("\n----------------------------------");
print(" This is a blank GameModeScript");
print("----------------------------------\n");
//printf("GetVehicleComponentType %u",GetVehicleComponentType(1100));
}
public OnGameModeInit()
{
// Set timer of 1 second.
for(new i;i<100;i++)
{
Itter_Add(Player, i);
ConnectedPlayerList[ConnectedPlayers++]=i;
}
SetTimer("OneSecTimer", 1000, 1);
print("GameModeInit()");
SetGameModeText("Timer Test");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}
public OneSecTimer() {
new sText[256];
format(sText,sizeof(sText),"GetTickCount = %d",GetTickCount());
print(sText);
SendClientMessageToAll(0xFF0000, sText);
new time = GetTickCount();
for (new i = 0; i < 10000; i++)
{
foreach(Player,I)
{
item1[I][i]=100;
}
}
printf("Time #1: %d", GetTickCount() - time);
time = GetTickCount();
for (new i = 0; i < 10000; i++)
{
ForEachPlayer(I)
{
item2[I][i]=200;
}
}
printf("Time #2: %d", GetTickCount() - time);
}

EDIT: New test:
pawn Код:
#include <a_samp>
#include <foreach>
forward OneSecTimer();
#define ForEachPlayer(%0) for(new index_%0=0, %0=ConnectedPlayerList[0]; index_%0<ConnectedPlayers; index_%0++, %0=ConnectedPlayerList[index_%0])
new item1[MAX_PLAYERS][10000],item2[MAX_PLAYERS][10000],item3[MAX_PLAYERS][10000];
new ConnectedPlayers;
new ConnectedPlayerList[MAX_PLAYERS+1];//Loop would bug when server is full D:
main()
{
print("\n----------------------------------");
print(" This is a blank GameModeScript");
print("----------------------------------\n");
//printf("GetVehicleComponentType %u",GetVehicleComponentType(1100));
}
public OnGameModeInit()
{
// Set timer of 1 second.
for(new i;i<100;i++)
{
Itter_Add(Player, i);
ConnectedPlayerList[ConnectedPlayers++]=i;
}
Itter_Remove(Player,random(50));
Itter_Remove(Player,random(100));
for(new i=0;i<100;i++)
{
if(ConnectedPlayerList[i]==5)
{
ConnectedPlayers--;
ConnectedPlayerList[i]=ConnectedPlayerList[ConnectedPlayers];
}
}
SetTimer("OneSecTimer", 1000, 1);
print("GameModeInit()");
SetGameModeText("Timer Test");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}
public OneSecTimer() {
new sText[256];
format(sText,sizeof(sText),"GetTickCount = %d",GetTickCount());
print(sText);
new time = GetTickCount();
for (new i = 0; i < 10000; i++)
{
foreach(Player,I)
{
item1[I][i]=100;
}
}
printf("Time #1: %d", GetTickCount() - time);
time = GetTickCount();
for (new i = 0; i < 10000; i++)
{
ForEachPlayer(I)
{
item2[I][i]=200;
}
}
printf("Time #2: %d", GetTickCount() - time);
time = GetTickCount();
for (new i = 0; i < 10000; i++)
{
for(new I;I<100;I++)
{
if(I != 40)
{
item3[I][i]=300;
}
}
}
printf("Time #3: %d", GetTickCount() - time);
}
