30.09.2013, 06:28
Mais um desafio! Dessa vez, a funзгo deverб ser parecida com strdel, mas deve deletar com mais velocidade 
Mгos a obra

Mгos a obra
fstrdel(string[], start, end = sizeof string, size = sizeof string) {
strcat((buffer[0] = 0, buffer), string, size);
buffer[start] = EOS;
strcat(buffer, string[end], size);
strcat((string[0] = EOS, string), buffer, size);
return true;
}
/*
new string2[] = " й um l";
new string1[66];
string1 = "bruno indo sabe tudo";
fstrins(string1, string2, 6);
print(string1);
*/
fstrins(string[], append[], pos, size = sizeof string, sizes = sizeof append) {
format(buffer, 0xff, "%s", string);
buffer[pos] = 0;
memcpy(buffer, append, strlen(buffer) * 4, sizes * 4, size);
strcat(buffer, string[pos]);
strcat((string[0]=0,string), buffer, size);
return true;
}
stock delendstr(source[144],start)
{
source[start] = EOS;
return source;
}
#define MAX_STRING (128)
stock bstrdel(string[], start, end, size = sizeof string)
{
static buffer[MAX_STRING];
strmid(buffer,string,0,(start-1),size);
strmid(string,string,end,size,size);
strins(string,buffer,0,size);
buffer[0] = EOS;
}
static buffer2[MAX_STRING];
static buffer3[MAX_STRING];
stock bstrdel2(string[], start, end, size = sizeof string)
{
strmid(buffer2, string, end, size, size);
string[start] = EOS;
strins(string, buffer2, start-1, end);
}
stock bstrdel3(string[], start, end, size = sizeof string)
{
strmid(buffer3, string, (end + 1), size, size);
string[start] = EOS;
strcat(string,buffer3,size);
}
stock bstrdel4(string[], start, end)
{
while(start != end)
{
string[start] = EOS;
start++;
}
}
[22:39:05] Bench for sa-mp: executes, by average 575.58 times/ms. [22:39:05] Bench for b1: executes, by average, 401.24 times/ms. [22:39:05] Bench for b2: executes, by average, 430.16 times/ms [22:39:05] Bench for b3: executes, by average,410.03 times/ms [22:39:05] Bench for b4: executes, by average, 488.89 times/ms
#include <a_samp>
#define START_BENCH(%0); {new __a=%0,__b=0,__c,__d=GetTickCount(),__e=1;do{}\
while(__d==GetTickCount());__c=GetTickCount();__d=__c;while(__c-__d<__a||\
__e){if(__e){if(__c-__d>=__a){__e=0;__c=GetTickCount();do{}while(__c==\
GetTickCount());__c=GetTickCount();__d=__c;__b=0;}}{
#define FINISH_BENCH(%0); }__b++;__c=GetTickCount();}printf(" Bench for "\
%0": executes, by average, %.2f times/ms.",floatdiv(__b,__a));}
#define MAX_STRING (128)
stock bstrdel(string[], start, end, size = sizeof string)
{
static buffer[MAX_STRING];
strmid(buffer,string,0,(start-1),size);
strmid(string,string,end,size,size);
strins(string,buffer,0,size);
buffer[0] = EOS;
}
static buffer2[MAX_STRING];
static buffer3[MAX_STRING];
stock bstrdel2(string[], start, end, size = sizeof string)
{
strmid(buffer2, string, end, size, size);
string[start] = EOS;
strins(string, buffer2, start-1, end);
}
stock bstrdel3(string[], start, end, size = sizeof string)
{
strmid(buffer3, string, (end + 1), size, size);
string[start] = EOS;
strcat(string,buffer3,size);
}
stock bstrdel4(string[], start, end)
{
while(start != end)
{
string[start] = EOS;
start++;
}
}
main()
{
new
str1[] = "hello my world",
str2[] = "hello my world",
str3[] = "hello my world",
str4[] = "hello my world",
str5[] = "hello my world"
;
START_BENCH(1000);
{
strdel(str1, 6, 8);
}
FINISH_BENCH("sa-mp");
START_BENCH(1000);
{
bstrdel(str2, 6, 8);
}
FINISH_BENCH("b1");
START_BENCH(1000);
{
bstrdel2(str3, 6, 8);
}
FINISH_BENCH("b2");
START_BENCH(1000);
{
bstrdel3(str4, 6, 8);
}
FINISH_BENCH("b3");
START_BENCH(1000);
{
bstrdel4(str5, 6, 8);
}
FINISH_BENCH("b4");
//strdel(str1, 6, 8);
printf("SAMP: %s",str1);
//
//bstrdel(str2, 6, 8);
printf("b1: %s",str2);
//
//bstrdel2(str3, 6, 8);
printf("b2: %s",str3);
//
//bstrdel3(str4, 6, 8);
printf("b3: %s",str4);
//bstrdel4(str5, 6, 8);
printf("b5: %s",str4);
}
[22:39:05] SAMP: hello [22:39:05] b1: hello [22:39:05] b2: hello [22:39:05] b3: hello [22:39:05] b5: hello