[Duda / Juego] їCuбl es la forma correcta de hacerlo?
#1

Buenas a todos,

Les quiero plantear una duda, aunque aviso que ya se la respuesta, es sуlo para saber que piensan sobre esto.

Ahн va: їCuбl es la forma correcta de hacerlo?

PHP код:
for(new 01024x++)
{
     
variable1[x] = 1;
     
variable2[x] = 1;

o

PHP код:
variable1[0] = 1;
variable2[0] = 1;
variable1[1] = 1;
variable2[1] = 1;
variable1[2] = 1;
variable2[2] = 1;
variable1[2] = 1;
variable2[2] = 1;
// hasta llegar a 1024 - 1... 
Si es posible, ademбs de decir si la primera o la segunda opciуn, tambiйn el motivo que les ha llevado a elegir esa opciуn.
Reply
#2

Quote:
Originally Posted by bm0z
Посмотреть сообщение
Buenas a todos,

Les quiero plantear una duda, aunque aviso que ya se la respuesta, es sуlo para saber que piensan sobre esto.

Ahн va: їCuбl es la forma correcta de hacerlo?

PHP код:
for(new 01024x++)
{
     
variable1[x] = 1;
     
variable2[x] = 1;

o

PHP код:
variable1[0] = 1;
variable2[0] = 1;
variable1[1] = 1;
variable2[1] = 1;
variable1[2] = 1;
variable2[2] = 1;
variable1[2] = 1;
variable2[2] = 1;
// hasta llegar a 1024 - 1... 
Si es posible, ademбs de decir si la primera o la segunda opciуn, tambiйn el motivo que les ha llevado a elegir esa opciуn.
PHP код:
for(new 01024x++)
{
     
variable1[x] = 1;
     
variable2[x] = 1;

Obviamente, pues estarнas asignando a la variable1[x] es decir hasta 1024 le asignaras el valor de 1, y a la variable2 lo mismo, de esta forma usando for es obviamente mas corto de hacerlo xD ademбs de que es innecesario hacer tantas lineas hacia abajo cuando solo necesitas eso.

Edito: si me explique un poco mal me refiero a que en ese for estarнas haciendo exactamente lo mismo que la segunda opciуn, pero esto lo harнa por ti
pawn Код:
variable1[0] = 1;
variable1[1] = 1;
variable1[2] = 1;
etc...
Reply
#3

Yo digo que es bбsicamente lo mismo, nomas que la primera opciуn es mas accesible.

Benchmark:



Cуdigo fuente: http://pastebin.com/23UdCE82

-> Incrementando el numero de cells/variables, resulta en el mismo tiempo de ejecuciуn, pero obviamente incrementado (dependiendo del numero).
Reply
#4

Yo dirнa que es el loop por la reducciуn de lineas, pensй que era igual pero de esta forma no me da lo mismo (Es claro que es un tema que quiere profundizar directamente a quй es mejor, por lo que el tiempo no importa, es minъsculo ademбs, se sabe muy bien, por si a alguien se le ocurre decirlo y evitar que se diga lo obvio).

PHP код:
main()
{
        print(
"Development Mode: variable_benchmark.amx");
        new 
tick_1[2];
        print(
"Layout:");
        for(new 
o!= 5o++)
        {
            
tick_1[0] = GetTickCount();
            for(new 
i!= 10000i++)
            {
                
ResetVariable_1();
            }
            
printf("%d. %d ms"oGetTickCount() - tick_1[0]);
        }
        print(
"Loop:");
        for(new 
o!= 5o++)
        {
            
tick_1[1] = GetTickCount();
            for(new 
i!= 10000i++)
            {
                
ResetVariable_2();
            }
            
printf("%d. %d ms"oGetTickCount() - tick_1[1]);
        }

Код:
[15:35:38] Layout:
[15:35:38] 0. 750 ms
[15:35:39] 1. 704 ms
[15:35:40] 2. 701 ms
[15:35:40] 3. 701 ms
[15:35:41] 4. 712 ms
[15:35:41] Loop:
[15:35:43] 0. 1806 ms
[15:35:45] 1. 1816 ms
[15:35:47] 2. 1810 ms
[15:35:48] 3. 1802 ms
[15:35:50] 4. 1801 ms
Reply
#5

Correcto. La primera opciуn (Loop) ocupa menos espacio y es mбs accesible, la segunda opciуn (Layout) ocupa mucho espacio y es menos accesible, pero es el doble de eficiente que la primera opciуn.

La respuesta vбlida es que las dos opciones son correctas, depende de la situaciуn.

Por cierto SickAttack, cometiste el error de usar gettime en lugar de GetTickCount, sino hubieras obtenido el mismo resultado que _Zume.

Por otra parte, la respuesta de Juand no es vбlida, en si era una pregunta trampa
Reply
#6

Para mi seria la primera, por que el codigo es mбs claro de ver para un programador. Se esta asignando una variable nueva por lo que "podrнa" ser mas lento que la otra (obviamente muy muy muy poco tiempo)

La segunda forma que guarda como ordenes, el AMX pesarнa mas (creo que es la unica diferencia). En tiempo de ejecucion, una asigna 1025 variables y le cambia el valor, en cambio la otra va caminando por las ordenes mientras le cambia el valor a cada una.
Reply
#7

Quote:
Originally Posted by bm0z
Посмотреть сообщение
Correcto. La primera opciуn (Loop) ocupa menos espacio y es mбs accesible, la segunda opciуn (Layout) ocupa mucho espacio y es menos accesible, pero es el doble de eficiente que la primera opciуn.

La respuesta vбlida es que las dos opciones son correctas, depende de la situaciуn.

Por cierto SickAttack, cometiste el error de usar gettime en lugar de GetTickCount, sino hubieras obtenido el mismo resultado que _Zume.

Por otra parte, la respuesta de Juand no es vбlida, en si era una pregunta trampa
No dije que ninguna de las 2 fuera incorrecta(Por lo cual no veo invalidez en mi comentario) ._. , creo que entendiste mal mi comentario, a lo que me refiero es que es mas accesible hacer un loop que ocupar tanto espacio y lineas, es una total idiotez, saludos.
Quote:

estarнas haciendo exactamente lo mismo que la segunda opciуn

Reply
#8

pero era obvia la respuesta, para algo se utilizan los loop. -.-
PD: creo que el creador de los loops esta ofendido.

saludos.
Reply
#9

Quote:
Originally Posted by Juand
Посмотреть сообщение
No dije que ninguna de las 2 fuera incorrecta(Por lo cual no veo invalidez en mi comentario) ._. , creo que entendiste mal mi comentario, a lo que me refiero es que es mas accesible hacer un loop que ocupar tanto espacio y lineas, es una total idiotez, saludos.
Te entiendo. Tu respuesta es vбlida, pero hubiera sido mбs vбlida decir que las dos son correctas y el motivo. A mi entender, _Zume es el que mбs ha acertado.

Por cierto, tengo que decir que he llegado a esta conclusiуn al leer el tema que se llamaba "La religiуn de los lenguajes", o algo asн, creo que se borro por tocar temas polйmicos como la polнtica y la religiу.

En fin, en ese tema, ademбs de religiуn, tambiйn hablaba de programaciуn y seguramente nunca hubiera caнdo en la cuenta que Loop tiene que realizar mбs tareas que un Layout (es decir, operaciones de goto).

P.D.: Desconozco si "Layout" es la palabra correcta para definir esto.
Reply
#10

Nose por que estaba usando gettime(), envйs de GetTickCount(). Tal vez me confundн con los timestamps por un momento.

Bueno aquн tengo otra, pero con 50,000 cells y es DIRECTAMENTE (sin llamar a ninguna funciуn).



Cуdigo fuente:
Parte 1 => http://pastebin.com/zULdXUm9
Parte 2 => http://pastebin.com/A8WaE6fv
Parte 3 => http://pastebin.com/gX0Yv2Fw
Parte 4 => http://pastebin.com/95kJi2a6

Conclusiуn: El ciclo es mas lento (con grandes cantidades de informaciуn), pero es mas accesible que deplorarlos asн como asн.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)