Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol PowerRustCOBOL
PowerRustCOBOL Nuevo entorno RAD de Cobol, con características muy interesantes, como llamadas nativas a APIs (REST) y soporte de la IA Generativa.
Creado y mantenido por nuestro forero Eslopes
 
Respuesta

  #1
Antiguo 28 de julio de 2026, 01:51
Eslopes
Creador de
PowerRustCOBOL
Guru de los Gurus: Por solidos y amplios conocimientos - Issue reason: Por ámplios conocimientos en la materia Concurso: Tercer puesto: Ganador/a del Tercer puesto en un concurso - Issue reason: Juego  Innovación: Por aportar innovaciones - Issue reason: Por aportar soluciones innovadoras 
Última Actividad 27.10.2026 07:38
Posts Posts: 396
Likes enviados Enviados: 31
Likes recibidos Recibidos: 172
Predeterminado Mide el rendimiento en tu maquina y publicalo
0 Inactivo Inactivo

PowerRustCOBOL 1.37.0 incluye por primera vez un banco de pruebas de rendimiento, y me gustaria pedir vuestra ayuda: ejecutadlo en vuestras maquinas y publicad aqui los resultados. Con medidas de equipos y sistemas distintos se puede optimizar sobre datos reales en vez de sobre suposiciones.

La version 1.37.0 marca el inicio del trabajo de optimizacion hacia la version de produccion, y esta es la linea de partida.

Que mide

Cada programa COBOL de la prueba recorre exactamente el mismo camino que un binario compilado: tokenizar, analizar y ejecutar con el interprete. Es decir, los numeros describen el interprete que va dentro de las aplicaciones que entregais, no una biblioteca aislada.

Ademas del tiempo se cuentan las reservas de memoria. Rust no tiene recolector de basura, asi que no hay pausas que medir; lo que importa bajo carga es cuantas veces se entra al asignador, cuantos bytes pasan por el y cuanto queda vivo en el pico. Un asignador global que cuenta da las tres cifras exactas en Windows, Linux y macOS sin ningun perfilador externo.

Como ejecutarlo

Desde la raiz del repositorio:

Código:
cargo run --release -p cobolt-bench
Tarda unos segundos una vez compilado e imprime una tabla directamente.

--release es obligatorio. En modo debug se mide la ausencia de optimizacion y las cifras no valen para nada. El programa avisa en la cabecera si se os olvida.

Para una sola carga de trabajo:

Código:
cargo run --release -p cobolt-bench -- dispatch
Los filtros validos son: dispatch, decimal, record (o batch), object, indexed.

Para una comprobacion rapida, una veinteava parte del trabajo:

Código:
PRC_BENCH_SCALE=0.05 cargo run --release -p cobolt-bench
Ojo: solo son comparables ejecuciones con la misma escala. Si publicais resultados, usad la escala por defecto (sin PRC_BENCH_SCALE).

La referencia actual

Apple M3 Pro, 18 GB, macOS 15.5, rustc 1.95.0, perfil release:

Código:
Carga                                 Ops/seg      Reservas/op   Pico vivo
dispatch (PERFORM VARYING)          5.721.961         4,00         0,0 MB
dispatch (PERFORM parrafo)            686.318        18,00         0,0 MB
COMPUTE decimal                       606.461        20,00         0,0 MB
lote de registros (1000, escr+lect)   183.612        65,06         0,8 MB
rotacion de objetos                   216.320        55,00         0,0 MB
indexed redb (insercion masiva)       140.922         0,66        22,4 MB
indexed redb (lectura aleatoria)    1.489.965         0,00        22,4 MB
Las cifras absolutas viajan mal entre maquinas; la columna de reservas por operacion viaja bien y deberia salir practicamente igual en cualquier equipo. Si en el vuestro no sale igual, eso ya es un hallazgo interesante por si mismo.

Que conviene publicar

- Procesador, memoria RAM y sistema operativo (con version).
- La salida de "rustc --version".
- La tabla tal cual la imprime el programa.
- Si compilasteis con alguna opcion fuera de lo normal.

Lo que ya dice la referencia

El cuello de botella no es el recorrido del arbol sintactico, sino el asignador de memoria. 5,7 millones de sentencias por segundo suena bien, pero hicieron falta 24 millones de reservas para ejecutar 6 millones de sentencias: un "ADD 1 TO ACC" entre dos campos COMP, que no deberia tocar el monticulo en absoluto, cuesta cuatro visitas al asignador. Eso cambia el orden del trabajo: una maquina virtual de bytecode aceleraria el despacho y dejaria esas cuatro reservas intactas, asi que se empieza por la memoria.

Las llamadas a parrafo cuestan 18 reservas cada una frente a 4 de una sentencia en linea. Los registros alfanumericos, 65 reservas por registro. Y las lecturas de propiedades de objeto reservan una cadena por lectura solo para poner el nombre en mayusculas.

El motor INDEXED, en cambio, no es el problema: redb inserta a 141.000 registros por segundo con 0,66 reservas por registro y sirve 1,5 millones de lecturas aleatorias por segundo casi sin reservar nada. El almacenamiento va holgadamente por delante del interprete que lo alimenta.

Los detalles completos, que aisla cada carga y como anadir una nueva, estan en docs/BENCHMARKS.md del repositorio. Y como compilar en cada sistema, en docs/BUILDING.md.

Gracias de antemano a quien se anime a medir.

Anthropic Claude Codex Agent
Eslopes is offline   Responder Con Cita
  #2
Antiguo 28 de julio de 2026, 02:06
Eslopes
Creador de
PowerRustCOBOL
Guru de los Gurus: Por solidos y amplios conocimientos - Issue reason: Por ámplios conocimientos en la materia Concurso: Tercer puesto: Ganador/a del Tercer puesto en un concurso - Issue reason: Juego  Innovación: Por aportar innovaciones - Issue reason: Por aportar soluciones innovadoras 
Última Actividad 27.10.2026 07:38
Posts Posts: 396
Likes enviados Enviados: 31
Likes recibidos Recibidos: 172

Workload — Carga de trabajo
El nombre de la prueba. Cada una aísla una parte distinta del motor: despacho de sentencias, aritmética decimal, lotes de registros, rotación de objetos o el motor INDEXED.

Ops — Operaciones
Cuánto trabajo real se hizo, con la unidad propia de cada carga (por eso cambia de fila en fila): stmt = sentencias COBOL despachadas, call = llamadas a párrafo, compute = sentencias COMPUTE, record = registros escritos o leídos, object = objetos creados y destruidos, read = lecturas por clave. No son iteraciones del bucle, sino unidades de trabajo, para que las columnas siguientes sean comparables entre cargas.

Wall — Tiempo de reloj
El tiempo transcurrido de principio a fin de esa carga, en segundos. Es tiempo real, no tiempo de CPU: si la máquina está ocupada con otra cosa, esta cifra sube.

Ops/sec — Operaciones por segundo
Ops dividido entre Wall. Es la cifra de rendimiento bruto, y la que peor viaja entre máquinas: depende del procesador, de la frecuencia en ese momento y de lo cargado que esté el equipo.

Allocs — Reservas de memoria
Cuántas veces se entró al asignador de memoria durante la carga. Se cuentan exactamente, con un asignador global propio. Es la señal más estable de la tabla: no se mueve con la carga de la máquina, así que si esta cifra cambia entre dos versiones, ha cambiado el código de verdad.

Allocs/op — Reservas por operación
Allocs dividido entre Ops. La columna más útil de todas: dice cuánta memoria pide el motor por cada unidad de trabajo. Debería salir prácticamente idéntica en cualquier máquina y sistema operativo, porque no depende de la velocidad sino de lo que hace el código. Un 4,00 significa cuatro visitas al asignador por cada sentencia; un 65,06, sesenta y cinco por cada registro.

MB churned — MB movidos
El total de megabytes que pasaron por el asignador durante la carga, se hayan liberado después o no. Mucho movimiento con poco pico (por ejemplo 409,6 MB movidos y 0,0 MB de pico) significa que la carga está reservando y liberando en bucle: memoria que se pide y se devuelve constantemente.

Peak live MB — MB vivos en el pico
El máximo de memoria viva a la vez durante esa carga: la marca de agua más alta. Es lo que la máquina tiene que tener disponible de verdad. Un 0,0 no quiere decir que no se reservara nada, sino que nada se retuvo: se liberaba tan rápido como se pedía.

Record batch va a 572 968 rec/s frente a los 183 612 que publiqué: 3,1× más rápido, y dispatch un 24 % más rápido, en lo que parece el mismo Mac. Una diferencia así en la misma máquina apunta a que mi medición de referencia se tomó con el equipo cargado — la hice justo después de compilar el workspace entero, y probablemente medí contra ruido térmico y de CPU.

Es decir: las cifras de Ops/sec que publiqué en el foro y en docs/BENCHMARKS.md son casi con seguridad pesimistas. Las de reservas siguen siendo correctas.

Miniatura de Adjuntos
Pulsar la imagen para la versión amplia
Nombre:  Untitled 22.jpg
Vistas: 39
Tamaño:  224,8 KB  
Eslopes is offline   Responder Con Cita
  #3
Antiguo 29 de julio de 2026, 17:49
Joseg
El Foro es mi casa
Activista del Foro: Activista del Foro - Issue reason: Por participación activa Innovación: Por aportar innovaciones - Issue reason: Por aportar soluciones innovadoras en varias ocasiones 
Última Actividad 15.10.2026 18:04
Posts Posts: 407
Likes enviados Enviados: 132
Likes recibidos Recibidos: 181

...meus testes

Miniatura de Adjuntos
Pulsar la imagen para la versión amplia
Nombre:  2026-07-29_153947.jpg
Vistas: 37
Tamaño:  613,2 KB  
Joseg is offline   Responder Con Cita
  #4
Antiguo 31 de julio de 2026, 19:44
Paulo
Forero Senior
Última Actividad 23.10.2026 14:25
Posts Posts: 101
Likes enviados Enviados: 25
Likes recibidos Recibidos: 33

resultados

Miniatura de Adjuntos
Pulsar la imagen para la versión amplia
Nombre:  testes.jpg
Vistas: 31
Tamaño:  205,1 KB  
Paulo is offline   Responder Con Cita
  #5
Antiguo 1 de agosto de 2026, 00:52
Eslopes
Creador de
PowerRustCOBOL
Guru de los Gurus: Por solidos y amplios conocimientos - Issue reason: Por ámplios conocimientos en la materia Concurso: Tercer puesto: Ganador/a del Tercer puesto en un concurso - Issue reason: Juego  Innovación: Por aportar innovaciones - Issue reason: Por aportar soluciones innovadoras 
Última Actividad 27.10.2026 07:38
Posts Posts: 396
Likes enviados Enviados: 31
Likes recibidos Recibidos: 172

Olá, Paulo,

qual a OS e máquina que você usou? memória e cpu

Grato
Eslopes is offline   Responder Con Cita
  #6
Antiguo 6 de agosto de 2026, 21:26
Paulo
Forero Senior
Última Actividad 23.10.2026 14:25
Posts Posts: 101
Likes enviados Enviados: 25
Likes recibidos Recibidos: 33

Olá Eslopes
Foi testado em:
Win 11 x64
I5-6400 2,70Ghz
16Gb Ram
Paulo is offline   Responder Con Cita
Respuesta


Herramientas

Derechos de Publicación
No puedes publicar nuevos temas
No puedes publicar posts/responder
No puedes adjuntar archivos
No puedes editar tus posts

BB code is habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado

Saltar a Foro


La franja horaria es GMT +2. Ahora son las 10:17.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.