Delphi 64 bits?
64bit (7)
Delphi 64 bits está en camino como todo el mundo sabe (al menos todos los programadores de Delphi). Aparte de lo que dice codegear sobre los beneficios de una aplicación Delphi de 64 bits (y el codegear no dice mucho sobre ella), ¿qué beneficio obtendré de tener una aplicación Delphi de 64 bits? ¿Es realmente una buena idea portar mi aplicación a 64 bits tan pronto como Codegear la libera?
EDITAR:
Solo lo estoy preguntando porque quiero todas las opiniones que pueda tener. Por ahora, puedo decir que realmente necesito más memoria disponible para mi aplicación porque consume muchos recursos. Realmente podría usar más velocidad, si es posible. No necesito extensiones de shell ni complementos.
Mis clientes también me preguntan sobre una versión x64 de mi aplicación, pero realmente no entiendo por qué lo piden, porque en realidad son abogados que no tienen idea de qué es una aplicación de 64 bits.
EDITAR
De hecho, no participo directamente en el desarrollo de la aplicación. Formo parte de un equipo de tecnología y creo cosas que otros desarrolladores de la empresa para la que trabajo utilizan realmente para desarrollar la aplicación final. Entonces, mi trabajo es hacer cosas técnicas, y portar una aplicación a x64 es el tipo de cosas que hago, pero necesito explicarles por qué hago eso a mis superiores.
¿Tiene una necesidad real de acceder a grandes (> 4 GB) de memoria en su aplicación, como el procesamiento de video o imágenes, o el procesamiento de grandes cantidades de datos muy rápidamente? ¿Su aplicación es una extensión de shell que necesita ejecutarse en versiones de 64 bits de Windows? ¿Tiene clientes o clientes que se quejan porque una versión de 64 bits de su aplicación no está disponible?
Si necesita actualizar su aplicación de inmediato a 64 bits, ya lo sabría. Como no es así, es probable que tenga mucho tiempo para hacerlo. Recuerde que las versiones de 32 bits de la mayoría de las aplicaciones funcionan bien en las versiones de Windows de 64 bits.
A la mayoría de los programas no les importará.
Tengo exactamente un programa que he escrito que haría una versión de 64 bits y que sería para aumentar el tamaño de la caché, e incluso entonces es solo porque lo que creo que sería la mejor compensación pone el uso de la memoria máxima algo más de 2 gb.
No, mantén tu aplicación 32 bit.
"Mis clientes también me están preguntando sobre una versión x64 de mi aplicación, pero realmente no entiendo por qué lo están pidiendo".
Lo que desean sus usuarios es que su aplicación funcione perfectamente en una versión de Windows de 64 bits. Debe probar esto y decirles que lo ha probado y que se ejecuta correctamente en Windows de 64 bits.
Si escribe extensiones de shell, ya sabe por qué necesita 64. En mi caso, tengo una DLL que se carga en el Explorador de Windows, y no puede cargar absolutamente una DLL de 32 bits. Hay aplicaciones que se beneficiarán de 64 bits, pero la mayoría, IMO no lo hará. Y para cosas como la mía, 64 bits es más una molestia que otra cosa.
¿Buena idea? Solo si crees que te hará más $$$. De lo contrario, el tiempo se emplea mejor para mejorar la calidad o agregar funciones. A menos que esté utilizando bibliotecas y controles de VCL nativos puros, es probable que tenga que esperar a que la asistencia de terceros se ponga al día. Todavía estoy reparando y reemplazando bibliotecas, relacionadas con la conversión a Unicode ...
Tengo este problema con algunos de mis clientes. Sucede en gran medida porque los departamentos de TI de sus respectivas empresas tienen una lista de verificación de cosas que deben ser ''consideradas'' cuando la compañía compra un nuevo software (o aprueba actualizaciones, etc.). De vez en cuando estas listas de verificación se actualizan para reflejar mejor el panorama de TI moderno, pero eso no siempre significa que los nuevos elementos tengan sentido en el contexto de su propio software de aplicación.
En algún momento, la gente comenzó a decir "ya que tenemos Windows XP / Vista / 7 de 64 bits, etc., tenemos que asegurarnos de que cualquier software nuevo también sea de 64 bits". Como desarrolladores, sabemos que este no es necesariamente el caso, pero si tratas de explicar esto a personas no técnicas, generalmente aparece cuando tratas de ocultar el hecho de que tu aplicación no es realmente de 64 bits. Cuando usted es un pequeño vendedor a medida en una feroz competencia con otros proveedores, no puede dejar que su trabajo pierda debido a una ''característica'' en gran medida irrelevante / no importante en la lista de verificación de alguien.
Hasta ahora, mi enfoque ha sido decirles a los clientes que el software ha sido probado y validado exhaustivamente en Windows de 64 bits, pero se ha desarrollado para que la misma versión exacta pueda ejecutarse en Windows de 32 bits o de 64 bits. Es perfectamente cierto porque mis aplicaciones se basan en gran medida en Delphi 2007, y en el último año más o menos comencé a hacer todas mis pruebas en Win7 de 64 bits como primer recurso (y luego a realizar un subconjunto de pruebas en 32 bits de XP, en clave hitos).
Por otro lado, tanto en el entorno de la pequeña empresa como (más sorprendentemente) el hogar, he visto muchas más instalaciones de 64 bits de Win7 que las de 32 bits. La mayoría de las máquinas nuevas que he visto en los últimos 6 meses parecen haber llegado con Win7 de 64 bits, lo que me parece bastante interesante.
También me gusta el comentario de The_Fox a la pregunta original: es posible que tenga que actualizar mis pantallas de presentación en consecuencia. Especialmente si puedo detectar que el programa se ejecuta en una versión de 64 bits de Windows ...
Un programa de 64 bits tiene las siguientes ventajas sobre el mismo compilado para 32 bits (x86):
Más registros. Los chips x86 de 64 bits tienen varios registros más y esto, en teoría (si el compilador lo aprovecha), en algunos casos da como resultado un código más rápido.
Más memoria. Con un programa de 32 bits generalmente se limitaba a un espacio de direcciones de 2GB o un espacio de direcciones de 4GB en total, si compiló con
/LARGEADDRESSAWARE
, que era de aproximadamente 3.5GB en la práctica debido a la división kernel / userspace de Windows. Un proceso de 64 bits puede abordar mucho más. Esto solo es importante si su aplicación necesita mucha memoria.Posibilidad de crear complementos para programas de 64 bits , como Explorer. A menos que use COM para un complemento, donde se organizan los datos, no puede mezclar código de 32 bits y de 64 bits en el único proceso en Windows, como un EXE de 64 bits que carga una DLL de 32 bits. Si quisiera escribir un complemento de Explorer, por ejemplo, no podría hacer que funcione con la versión de Explorer de 64 bits con versiones anteriores de Delphi. Podrás con la versión de 64 bits.
Delphi-specific: el compilador usará instrucciones SSE / SSE2 para cálculos de punto flotante, donde el compilador actual de 32 bits solo usa instrucciones FPU x87 (creo). Esto debería dar un aumento de velocidad para matemática de coma flotante. Probablemente ni siquiera te darás cuenta a menos que tu aplicación sea altamente dependiente de FP (un juego, tal vez, o una aplicación de procesamiento de datos, ese tipo de cosas).
La respuesta a su pregunta "¿me beneficiaría tener una aplicación Delphi de 64 bits?" es altamente dependiente de su aplicación específica. En general, es poco probable que haya mucho beneficio más allá, posiblemente, de un pequeño aumento de velocidad. Sin embargo, no confíe en 64 bits para acelerar una aplicación lenta: aún necesitará realizar cambios algorítmicos para aumentos de velocidad grandes. 64 bits no es una bala mágica. Aparte de eso, solo necesita cambiar si ya ha encontrado uno de los límites impuestos por 32 bits. Sospecho que no lo hizo o no haría la pregunta.
Si decide convertir, puede encontrar este hilo muy útil.
Pero otra cosa: incluso si no necesita cambiar, es posible que desee, especialmente si su aplicación es un proyecto personal. Puede aprender cosas, su código será de mayor calidad cuando solucione problemas de 32/64 bits, y un proyecto como ese puede ser divertido. Eres un programador, después de todo :)
Editar: Veo que ha actualizado su pregunta con "Puedo decir que realmente necesito más memoria disponible para mi aplicación porque consume muchos recursos. Realmente podría usar más velocidad, si es posible".
¿Qué recursos? ¿Memoria? 64 bits le dará un mayor espacio de dirección direccionable, eso es todo. No le dará más identificadores de GDI, etc., si estos cuentan como recursos. Sin embargo, si realmente necesita más memoria, valdrá la pena convertir a 64 bits.
"Más velocidad", si desea una gran diferencia, es más probable que se logre mediante cambios algorítmicos o de subprocesamiento que a través de un compilador de 64 bits.
"Mis clientes también me preguntan sobre una versión x64 de mi aplicación, pero realmente no entiendo por qué lo piden, porque en realidad son abogados que no tienen idea de qué es una aplicación de 64 bits". Lo más probable es que hayan escuchado que 64 bits es mejor o más rápido. En un mundo ideal, los clientes tendrían requisitos basados en la realidad, pero este no es siempre el caso. Pragmáticamente hablando, si el cliente quiere algo como esto, puede valer la pena simplemente porque los hace felices: los clientes satisfechos son buenos y pueden pagarle por la nueva versión, y puede ayudar a la reputación de boca en boca de su empresa.
Una situación en la que importarán 64 bits es para aplicaciones numéricas multiproceso paralelas a datos en máquinas de varios núcleos. Para una aplicación de este tipo, el espacio de direcciones de 32 bits puede ser restrictivo si los datos no se pueden dividir en partes lo suficientemente pequeñas.
Aparte de eso, el mayor empuje a 64 bits es para las extensiones de otros programas. Por ejemplo, extensiones de shell, complementos de Excel, extensiones de MATLAB, etc.