Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-08-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
te da error porque era para dar error...te llena la memoria hasta que te la agota, y entonces te salta el error... prueba con un try...except, y cuando te salte la excepcion, es que la memoria esta 'cargada' al maximo (bueno, asignada, bloqueada, si quieres medir el tiempo de lectura/ escritura deberas hacer lo analogo con read, write)
Responder Con Cita
  #2  
Antiguo 28-08-2008
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.144
Poder: 21
kurono Va por buen camino
ok dejame modificar un poco el codigo luego te cuento
Responder Con Cita
  #3  
Antiguo 28-08-2008
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.144
Poder: 21
kurono Va por buen camino
disculpa coso podias darme un ejemplo de como medir el tiempo de lectura/escrituara de la memoria ram
Responder Con Cita
  #4  
Antiguo 28-08-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
pues sinceramente...estaba buscando algo como readblock o algo asi y no lo he encontrado. Lo q se me ocurre es:

- creas un loop for ...next de, por ejemplo, 10000 ciclos y mides su tiempo
- dentro de otro loop for...next, pones algo asi como s[i] := 1, y mides su tiempo. Restando el tiempo del loop vacio, Sera el tiempo de escritura
- dentro de otro, haces temp := s[i] y sera el tiempo de lectura (restando el del loop vacio).

No se me ocurre nada mas no se si sera diferente velocidad si se asignan enteros o chars (supongo que si) o si delphi usa algun tipo de verificacion en las asignaciones (que tambien lo creo) por lo q te daria una medida erronea. Prueba de hacer una busqueda por 'benchmark', a ver q encuentras...saludos
Responder Con Cita
  #5  
Antiguo 28-08-2008
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.144
Poder: 21
kurono Va por buen camino
ok lo probare a ver
Responder Con Cita
  #6  
Antiguo 28-08-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 22
cHackAll Va por buen camino
Para acceder a la memoria RAM necesitas modificar los privilegios de acceso a dicho objeto (restringido por su naturaleza crítica), luego realizar un mapeado del mismo en tu proceso y leer por bloques razonables múltiplos de 4 Kb que es el tamaño del PAGE_SIZE en arquitecturas x86.

La taza de trasferencia pico de las memorias utilizadas en la actualidad es de 1.6 Gb por segundo en DDR-200 a los fascinantes 8.5 Gb/s de DDR2-1066.

Si tu objetivo es leer la memoria virtual utilizada por tu proceso, la cosa cambia un poco puesto que en la misma no solo interviene la memoria física, sino también la temporal en la que el disco duro es el huésped de los datos... si realizas un proceso X de E/S varias veces el SO realiza un caché y la velocidad mejora considerablemente moviendo la información "de un lado para otro" para dicho fin.

Para cronometrar tus procesos usa GetTickCount como comenta coso, considerando que en memoria virtual no hay la limitante del tamaño de paginación, también considera los parámetros con los que reservas la memoria (MEM_MOVEABLE, ZEROINIT, etc, etc.), pues los mismos cambiarán la forma en que el SO optimizará dicho recurso.

Saludos
__________________
RTFM > STFW > Foro > Truco > Post > cHackAll > KeBugCheckEx
Responder Con Cita
  #7  
Antiguo 29-08-2008
HySTD HySTD is offline
Miembro
 
Registrado: sep 2006
Posts: 15
Poder: 0
HySTD Va por buen camino
Cita:
Para acceder a la memoria RAM necesitas modificar los privilegios de acceso a dicho objeto (restringido por su naturaleza crítica)
Puedes utilizar la función VirtualProtect de la api win32.

Cabe decir que hay que tener en cuenta los accesos a la caché del procesador (en todos los niveles).

También hay que pensar que cuando uno o varios procesos ocupan todo el espacio de memoria física, el sistema operativo irá paginando a disco y reemplazando aquellos segmentos según un criterio (LRU, FIFO, aleatorio, etc...), aunque bien es cierto que los Sistemas operativos optan por reducir la frecuencia de fallos más que encontrar un buen algoritmo de reemplazo, pero esto no viene al caso. A parte, existe la paginación a nivel de hardware, cuyas páginas son de tamaño fijo. Hoy en dia se suele utilizar la segmentación paginada que es una mezcla de los dos.

Para evitar que cierta región de memoria no sea paginada se suelen utilizar drivers, que son precisamente eso: procesos que se ejecutan en espacio protegido (modo kernel) y que no son paginados.

Por tanto es difícil medir cuando la RAM se llena y cuándo no; puedes establecer una cota basándote en la capacidad de ésta, no obstante si realmente quieres testear la RAM puedes optar por hacer un driver.

Un saludo.
Responder Con Cita
  #8  
Antiguo 29-08-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 22
cHackAll Va por buen camino
Cita:
Empezado por HySTD Ver Mensaje
Cita:
Para acceder a la memoria RAM necesitas modificar los privilegios de acceso a dicho objeto (restringido por su naturaleza crítica)
Puedes utilizar la función VirtualProtect de la api win32.
Me temo que esa API esta orientada a otro tipo de memoria;

Cita:
The VirtualProtect function changes the access protection on a region of committed pages in the virtual address space of the calling process...
Cita:
Empezado por HySTD Ver Mensaje
Cabe decir que hay que tener en cuenta los accesos a la caché del procesador (en todos los niveles).
Hablamos de caché L1, L2,... propios del microprocesador? estoy confundido!

Saludos
__________________
RTFM > STFW > Foro > Truco > Post > cHackAll > KeBugCheckEx
Responder Con Cita
  #9  
Antiguo 29-08-2008
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.144
Poder: 21
kurono Va por buen camino
amigos mio veo que se estan confundiendo pues yo estoy hablando de la memoria ram fisica no de la memoria virtual ni la memoria cache L2 , lo que quiero es medir el tiempo de lectura/escritura de la memoria ram que por cierto todavia no e podido hacer pues le pido que me ofrescan un ejemplo en codigo para tener por donde empezar no le pido mucho solo un ejemplo sencillo pues lo acomodare a mi necesidad
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
como descargar Rave y QReport para delphi 2007 kurono Varios 2 21-08-2008 19:54:04
¿como descargar archivos por fecha y hora.? JXJ Firebird e Interbase 3 07-09-2007 20:30:38
¿Cómo descargar Archivo de Muchas Fuentes? JXJ Varios 3 14-03-2007 02:09:08
Como descargar una imagen a partir de la url Oxis Internet 2 20-07-2006 20:04:56
Como descargar una pagina web completa??? jhonny Internet 2 15-07-2006 17:58:23


La franja horaria es GMT +2. Ahora son las 03:36:16.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi