FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
¿Que es más rápido AnsiUppercase o Uppercase?
Le pase uno de esos optimizadores de código que hay por ahí a un proyecto que tengo y me sorprendio ver que me sugería que cambiara mis llamadas a Uppercase por llamadas a AnsiUppercase y lo mismo para los equivalentes en lowercase, porque según es más rápido... ustedes creen que si tenga una ventaja hacer ese cambio??
__________________
"Hey, nena, debe ser genial ser tú y verme a mí mismo..." |
#2
|
||||
|
||||
Cita:
Y la otra, tiene más líneas de código... por decir algo.
__________________
Progress Openedge https://abevoelker.com/progress_open...dered_harmful/ Delphi forever... Última edición por defcon1_es fecha: 04-10-2007 a las 16:42:03. |
#3
|
||||
|
||||
La razón por la que pongo esto aqui es porque yo he hecho pruebas con Delphi 2007 y la llamada a Uppercase la resuelve más rápido que a AnsiUppercase, pero esas son mis ideas, ya algun entendido con más pericia nos develará el misterio
__________________
"Hey, nena, debe ser genial ser tú y verme a mí mismo..." |
#4
|
||||
|
||||
Vamos por partes, uppercase utiliza un procedimiento interno para realizar la tarea. Simplemente recorre la cadena y va convirtiendo cada letra en mayúsculas aplicando una simple operación (restándole $20). Sin embargo AnsiUppercase, utiliza una función de la API para realizar la tarea. No se si la API sera mas rápido que el código de borland (lo dudo), pero tiene otras ventajas.
Por ejemplo:
En el ejemplo anterior, mientras el primer Uppercase utiliza una simple operación para calcular las mayúsculas, los otros dos utilizan la función CharUpperBuf de la API. Así mientras en el primer caso el resultado no es correcto, ya que no reconoce "ñ" como una letra minúscula, en los otros dos se utiliza la configuración de idioma de windows para hacer la conversión. En resumen, que supongo que te recomienda usar AnsiUppercase no porque sea mas rápida, sino porque no comete errores como el de la "ñ" |
#5
|
||||
|
||||
Muchas gracias Seoane, con esas ventajas creo que no me importará que una se lleve unos cuantos ciclos del procesador de mas... usaré AnsiUpperCase
Thanx
__________________
"Hey, nena, debe ser genial ser tú y verme a mí mismo..." |
#6
|
||||
|
||||
Pero AnsiUpperCase tiene un llamado a una API de windows CharUpperBuff, no se cuantas lineas de codigo tenga esa función pero se supone que esa función acepta caracteres UNICODE, mientras que UpperCase solo acepta caracteres ACII, por lo que asumo que debe demorar mas usar AnsiUpperCase, pero realmente hoy en dia no creo que esa diferencia de quiza milimilimili segundos sea un problema, incluso he tratado de hacer una prueba usando el GetTickCount y no he podido mostrar una diferencia, por lo que personalmente usaria AnsiUpperCase.
Nota: Veo que mientras hacia las pruebas mencionadas seoane a resuelto el caso .
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#7
|
||||
|
||||
Bien, una duda resuelta... es una de aquellas cosas que siempre pensé: "Que diferencia "real" habrá?" pero que nunca me he detenido en buscarlo... xD
Saludos. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
UpperCase en DBGrid | Phacko | Varios | 12 | 23-06-2011 18:10:21 |
Ayudenme Rapido, Rapido | omarys | Varios | 6 | 04-06-2011 09:45:34 |
Activar UpperCase a un DBMemo | ElCherchu | Varios | 1 | 17-01-2005 16:36:28 |
...rapido de mente... | Jure | Humor | 5 | 08-10-2004 16:09:13 |
UPPER, UpperCase con eñes, tildes ... | Tomás | Firebird e Interbase | 3 | 15-01-2004 18:24:24 |
|