Antonio,
Como siempre, te agradezco tu pronta respuesta asi como tus consejos tecnicos y tu disposicion de ayuda.
Pero antes de seguir quiero aclararte que TODAS las aplicaciones que he desarrollado con Harbour + Fivewin NO son lentas en modo alguno.
Por el contrario son mas rapidas que todos los otros entornos de desarrollo (IDE) que he utilizado y que no lo voy a mencionar para no entrar en discusiones irrelevantes.
Lo que me refiero es a la *
optimizacion* del codigo EXE generado por Harbour (aunque gracias al comentario der hmpaquito y al tuyo creo que entiendo mejor ahora).
Por ejemplo si tenemos una database con decenas de millones de records donde los campos pueden ser tratados como un 'string" de bits, talvez podemos usar FWH64 para representar una informacion "binaria" de longitud 64 bits almacenado como un numero entero en formato hexadecimal.
En este caso podemos aplicar el concepto de Bit Map (como expresado en el libro "Clipper 5.2 - Power Programmer Guide", autor Rick Spencer, pags. 688-694), para accesar directamente (y manipular) esta informacion a nivel de bits.
Supongamos que en nuestra database tenemos un tipo de producto X particular, representado por el string de 64 bits expresado en hexadecimal, y que la posicion No. 32 (dentro de ese string de 64 bits) representa un atributo especifico (del producto X) cuando esta "1" y la carencia de ese atributo cuando esta "0". Aqui podemos, de forma muy rapida, mediante operaciones bitwise (AND, OR, o XOR) investigar cuales productos tienen esa caracteristicas y cuales no,
Lo anterior es posible ya que estas operaciones "bitwise" se ejecutan en "computer's clock cycle" asi que nuestros programas realizarian millones de estas operaciones por segundo.
La pregunta mia es, si debido al factor P-Code, que tipo de limitaciones tendremos al usar las operaciones bitwise desde Harbour64 + FWH64?
Si hay limitaciones, en lo que se refiere a la velocidad, podemos evitarlas desarrollando funciones escritas en lenguaje C y llamandolas desde nuestro programas Harbour64?
Cual es tu opinion referente al codigo siguiente que esta siendo llamado desde Harbour64 + FWH64?
Se estaria ejecutando a una velocidad diferente (menor) que si lo llamaramos desde un programa escrito enteramente en C, aunque utilizemos el mismo compilador?
- Code: Select all Expand view RUN
#pragma BEGINDUMP
#include <hbapi.h>
#include <math.h>
// Bitwise XOR C Function
HB_FUNC( C_XOR )
{
long long int nHexadecimal1, nHexadecimal2;
long long int nXor;
nHexadecimal1 = hb_parnll(1);
nHexadecimal2 = hb_parnll(2);
nXor = nHexadecimal1 ^ nHexadecimal2;
hb_retnll( nXor );
}
#pragma ENDDUMP
Saludos,
George