Un error común en programación

Una cosa que se suele hacer bastante en javascript es resetear un formulario, es decir, devolver el formulario a su valor inicial.

Con jquery esto es bastante fácil:


$(

Trackback URL

, , , ,

  1. Juanjo
    26/11/2008 at 2:31 am Permalink

    No estoy seguro, pero en lenguajes compilados (y no interpretados -incluyendo código intermedio-) se realizan optimizaciones que detectan esto que describes.

    Igual puede ser interesante probarlo y compilar con gcc con el flag -O 🙂

  2. Pau Sanchez
    26/11/2008 at 10:42 am Permalink

    La respuesta corta a esa pregunta es:
    Efectivamente el g++ con -O3 optimiza el strlen, pero no es capaz de optimizar ninguna función que hayas creado tú, por lo que la línea entre lo que es capaz de optimizar en un bucle, y lo que no, no está clara.

    Parece que optimiza el strlen porque conoce strlen (aunque en lo que tengo de experiencia en linkers y compiladores, esto no debería ser así, y seguro que hay una explicación mejor a que tiene hardcodeadas optimizaciones para strlen y otras funciones de la CRT).

    Para más información, y un análisis completo, mira la segunda parte 🙂

  3. maeghith
    26/11/2008 at 10:58 am Permalink

    No, en pascal no pasa ya que pascal no usa el » para las cadenas y arrays sino que guarda el tamaño en el 1º elemento.

    En la wikipedia lo explican: http://en.wikipedia.org/wiki/String_(computer_science)#Representations (inglés)

    Creo que esta es una de las cosas por las que Pascal se ha usado bastante en la demoscene: parecía que iba más rápido en los bucles.

  4. Pau Sanchez
    27/11/2008 at 1:58 am Permalink

    @maeghith: me he centrado en la función strlen en PHP para ejemplificar, pero me referia al concepto en si de meter una llamada a una función en un bucle.

    Efectivamente en Pascal no pasa, y en Java, aunque no he hecho la prueba, seguramente al llamar a length probablemente tampoco (y seguramente que usando la clase string de C++ – una de las clases más mal diseñadas en la historia de la humanidad – esto tampoco pase), pero repito que si no sabes como está diseñada una función, y que es capaz o no de optimizar el compilador o interprete, por lo general es mejor idea no ponerlo en el bucle, si bien es verdad que al final tampoco va a afectar mucho a los tiempos de ejecución, toda gota cuenta para llenar un vaso.

    En cualquier caso, la idea es que la gente tome conciencia, no dictar una norma. Si sabes lo que haces, eres libre de hacer lo que quieras 😉

    PD: @maeghith tio no se te esapa un blog, eres un crack 😀

  5. maeghith
    27/11/2008 at 9:12 am Permalink

    Sí, claro hay que ser consciente de lo que se hace.

    PD: no fue difícil: compartiste 2 posts de este blog con el g.reader 🙂

Trackbacks

  1. [...] ha apuntado que muy probablemente esto que yo comentaba como un típico error que la gente comete cuando programa,…

  2. [...] Calling to functions that return the same value over and over to test the exit condition on a loop…