[Programación] Desbloqueables

Srednuht

#24 http://csharp-facilito.blogspot.com.es/2013/07/busqueda-binaria-en-c-sharp.html

Se me olvido ponerte un ejemplo de algoritmo de de búsqueda.

Y ten, uno de ordenación:

http://www.estructuradedatos.galeon.com/burbujatext.htm

2 respuestas
B

#30

Hombre, es evidente que iterar + A, es distinto que iterar + B xD, dónde A y B son operaciones distintas.

#31

Yo estoy lejos de ser un experto en programación, pero siempre que he hablado con gurús (o al menos yo los considero así xD) sobre estos temas, lo mejor es utilizar los métodos que ya están implementados en la propia clase (vector, table, etc) o utilizar los que vengan en la librería estándar (cómo en C o C++), supongo que en C# habrá algo parecido (espero no tener que tocar ni con el palo de otro ese lenguaje xD).

Está bien conocer los algoritmos y cómo funcionan, así sabes lo que realmente quieres/necesitas, pero yo desaconsejaría implementarlos. Dudo mucho que pueda implementarlo mejor que los que ya están hechos.

2 respuestas
Srednuht

#32 En C# tienes cosas como lo que ha dicho #29, pero estas cosas no suponen reinventar la rueda, estan hechas y es poco más que un CTRL+C / +V . Para según que cosas, pueden ser solución sin ningun problema

1 respuesta
Kiroushi

#32 Por eso. cabron puso un ejemplo de iteración donde asignaba un valor a un array para demostrar que no tiene ningún tipo de repercusión en rendimiento y yo le digo que no es representativo.

1 respuesta
B

#33

Precisamente cómo indica #29, mejor usar el lenguaje y sus funciones/métodos estándar que tirar de copy&paste xD.

Por supuesto que lo que propones también es solución :P, pero aunque sea simplemente por el mantenimiento del código, es una muy buena razón para no tener que implementar tú nada.

-Crack-

Preocuparse por optimizar la iteración de un array que no se ejecuta en cada frame es, en mi opinión, perder el tiempo. Otra cosa es que tengas que hacer cálculos para IA y tal, ahí ya si quieres te metes en algoritmos más complejos.

Czhincksx

Estais hablando de costes de iterar sobre elementos de un array de skins como si fuera algo a tener en cuenta para la optimización. Ten en cuenta esto: no vas a tener suficientes skins como para que te merezca la pena dedicRle un minuto a un algoritmo de ordenación de array y esas cosas. Tú mete tus skins desbloqueados en un diccionario y olvidate de optimizar. Tus esfuerzos de optimización tienen que ir al 95% sobre el código que ejecutes en cada frame y no casos puntuales como el que comentas.

1
BLZKZ

#31 ordenación mergesort/quicksort son mucho más eficientes que burbuja xD

1 respuesta
Srednuht

#38 Quicksort es mi 'favorito', le he puesto un ejemplo por poner xDD

cabron

#34

Por que el estaba preguntando por el coste de iterar un array, no del coste de hacer X con cada elemento del array.

Realmente hubiese valido con

 for (var i = 0; i < a.length; i++ );

por que lo único que había que hacer era recorrer el array, pero como puse en otro post si haces eso lo más probable es que el intérprete detecte que son operaciones que no hacen nada y se las fume, lo de escribir en cada elemento era solo para forzar a que lo recorra entero.

Soltrac

Para que quede claro,

Cuesta lo mismo

foreach (int i in arraydeenteros)

que

foreach (ClaseMuyComplicada i in arraydeclasescomplicadas)

Ambos son una colección de direcciones de memoria. (OJO, no son técnicamente lo mismo porque con un foreach vas haciendo una copia en una variable local y por supuesto copiar una clase es más costoso que copiar un entero, pero era para demostrar que la iteración es indiferente)

Obviamente es más costoso

if (i == 1)

Que

if (i.AtributoComplicado.AtributoComplicado2 == blablabla)