Posted by : Unknown miércoles, 12 de noviembre de 2014

SDP04 - Ejercicio 05

Miércoles 12 de noviembre de 2014


PROPÓSITO
El propósito de este ejercicio es calcular con  un programa en C para la medición del desempeño.
En este ejercicio utilizamos  tanto las implementaciones de C y Java del programa que calcula la raíz cuadrada de un número usando dobles.

Resultados
C es más rápido que Java.

Los Puntos de Referencia
Contra toda lógica, la única área en la que Java puede ser tan rápido como C ++ es un punto de referencia típica. Si usted necesita para calcular número enésimo de Fibonacci o ejecutar Linpack, no hay ninguna razón por qué Java no puede ser tan rápido como C ++. Mientras todo el cálculo se queda en una clase y sólo utiliza los tipos de datos primitivos como int y doble, el compilador Java es en igualdad de condiciones con el compilador de C ++.

En el mundo real

En el momento de empezar a usar objetos en su programa, Java pierde el potencial de optimización. En esta sección se enumeran algunas de las razones por qué.

1. Todos los objetos se asignan en el montón

Java sólo asigna los tipos de datos primitivos como int y referencias dobles y objeto en la pila. Todos los objetos se asignan en el montón.

Para objetos grandes que normalmente tienen la semántica de identidad, esto no es una desventaja. Programadores de C ++ también asignar estos objetos en el montón. Sin embargo, para objetos pequeños con semántica de valor, esta es una importante causa de muerte rendimiento.

2. Muchos de los yesos

Con el advenimiento de las plantillas, los programadores buena C ++ han sido capaces de evitar yesos casi completamente en programas de alto nivel. Por desgracia, Java no tiene plantillas, por lo que el código de Java es normalmente llena de moldes.

3. Aumento de la memoria Uso

Programas Java utilizan casi el doble de la memoria de programas comparables C ++ para almacenar los datos. Hay tres razones para ello:

Los programas que utilizan la recolección de basura automática suelen utilizar aproximadamente un 50% más de memoria que los programas que hacen la gestión de memoria manual.
Muchos de los objetos que se asignan en la pila en C ++ se asignarán en el montón de Java.
Objetos Java serán más grandes, debido a todos los objetos que tienen una tabla virtual además de soporte para primitivas de sincronización.
Una huella de memoria más grande aumenta la probabilidad de que las partes del programa se pueden intercambiar en el disco. Y el uso del archivo de intercambio mata la velocidad como ninguna otra cosa.

4. La falta de control sobre los detalles

Java fue diseñado intencionalmente para ser un lenguaje sencillo. Muchas de las características disponibles en C ++ que le dan el control del programador sobre los detalles fueron despojados deliberadamente de distancia.

Por ejemplo, en C ++ se puede implementar esquemas que mejoren la localidad de referencia. O asignar y muchos objetos libres de una vez. O jugar trucos punteros para hacer el acceso más rápido miembro. Etcétera

Ninguno de estos sistemas están disponibles en Java.

5. No hay optimizaciones de Alto Nivel

Los programadores lidiar con conceptos de alto nivel. A diferencia de ellos, los compiladores se ocupan exclusivamente de los de bajo nivel. Para un programador, una clase llamada Matrix representa un concepto de alto nivel diferente de una clase denominada Vector. Para un compilador, esos nombres son sólo las entradas en la tabla de símbolos. Lo que le importa son las funciones que contienen esas clases, y las sentencias dentro de esas funciones.

Conclusión

Java, con las características del lenguaje actual, nunca será tan rápido como C ++. Esto más o menos significa que no es una buena opción para el software de alto rendimiento y la arena COTS altamente competitivo. Pero su pequeña curva de aprendizaje, su perdón y su gran biblioteca estándar la convierten en una buena opción para algunos programas de pequeño y mediano tamaño de la casa y hecha a la medida.


Leave a Reply

Subscribe to Posts | Subscribe to Comments

Welcome to My Blog

Popular Post

Blogger templates

Con tecnología de Blogger.

- Copyright © Zavala Zavala - Computing and Problem Solving -Robotic Notes- Powered by Blogger - Designed by Johanes Djogan -