Tecnicas de mejoramiento de codigo (autoguardado)

10
Una gran variedad de programas se desarrollan para diversas aplicaciones de todo tipo. Al usuario final de un programa solo le interesan dos cosas: que el programa sea fácil de manejar y que su ejecución sea lo más rápida posible. Para mejorar este último aspecto cada día se tienen más en cuenta las optimizaciones en el código del programa. El objetico de las técnicas de optimización es mejorar el programa para que nos dé un rendimiento mayor. La materia de estas técnicas vienen a compensar ciertas ineficiencias que aparecen en el lenguaje fuente, ineficiencias que son inherentes al concepto de lenguajes de alto nivel, el cual suprime detalles de la maquina objeto para facilitar la tarea de implementar un algoritmo. Las técnicas se dividen en globales y locales Las locales analizaran solo pequeñas porciones de código y se realizaran mejoras, por otro lado las aplicaciones de las técnicas globales será necesario el análisis de todo el código. La optimización se basa en la función de coste y la transformación que preserve el significado del programa. Con función de coste se quiere evaluar la mejora que hemos obtenido con esa optimización y se compensa con el esfuerzo que el compilador realiza para poder llevarla a cabo. Los criterios con esta función son el ahorro en el tamaño del código, reducción del tiempo de ejecución y la mejora de necesidades del espacio para los datos del programa. En cuanto a preservar el significado del programa, es lógico que no tuviera sentido realizar optimizaciones que modificaran el comportamiento del programa.

description

Revista de informacion para cualquier estudiante

Transcript of Tecnicas de mejoramiento de codigo (autoguardado)

Page 1: Tecnicas de mejoramiento de codigo (autoguardado)

Una gran variedad de

programas se desarrollan

para diversas aplicaciones de

todo tipo. Al usuario final de

un programa solo le interesan

dos cosas: que el programa

sea fácil de manejar y que su

ejecución sea lo más rápida

posible.

Para mejorar este último

aspecto cada día se tienen

más en cuenta las

optimizaciones en el código

del programa.

El objetico de las técnicas de optimización es

mejorar el programa para que nos dé un

rendimiento mayor. La materia de estas técnicas

vienen a compensar ciertas ineficiencias que

aparecen en el lenguaje fuente, ineficiencias que

son inherentes al concepto de lenguajes de alto

nivel, el cual suprime detalles de la maquina objeto

para facilitar la tarea de implementar un algoritmo.

Las técnicas se dividen en

globales y locales

Las locales analizaran solo

pequeñas porciones de

código y se realizaran

mejoras, por otro lado las

aplicaciones de las

técnicas globales será

necesario el análisis de

todo el código.

La optimización se basa en la función de coste

y la transformación que preserve el significado

del programa.

Con función de coste se quiere evaluar la

mejora que hemos obtenido con esa

optimización y se compensa con el esfuerzo

que el compilador realiza para poder llevarla a

cabo. Los criterios con esta función son el

ahorro en el tamaño del código, reducción del

tiempo de ejecución y la mejora de necesidades

del espacio para los datos del programa.

En cuanto a preservar el significado del

programa, es lógico que no tuviera sentido

realizar optimizaciones que modificaran el

comportamiento del programa.

Page 2: Tecnicas de mejoramiento de codigo (autoguardado)

Estas optimizaciones se

pueden dividir en:

-optimizaciones que no

modifican la estructura

Eliminación de sub-

expresiones comunes

Eliminación de código

muerto

Renombrar variables

temporales.

Intercambio de

sentencias

independientes

adyacentes

-transformaciones algebraicas

Son aquellas

transformaciones que

simplifican expresiones

y/o reemplazan

operaciones costosas

de la maquina por otras

menos costosos.

Existen otros tipos de

optimizaciones más locales, pues

su ámbito se reduce a una breve

secuencia de instrucciones, a este

tipo de optimización se le llama

optimización peephole, e intenta

mejorar el rendimiento del

programa por medio de

reemplazar esa breve secuencia

de instrucciones objeto por otra

secuencia más corta y/o más

rápida. Hay varios tipos de

optimización peephole, siendo

los más usuales:

1. Eliminación de

instrucciones redundantes

2. Optimizaciones de flujo de

control

3. Simplificaciones

algebraicas

4. Uso de instrucciones

maquina especificas

Page 3: Tecnicas de mejoramiento de codigo (autoguardado)

Optimizacio n local de co digo

En la actualidad los ordenadores están invadiendo todos

los campos del conocimiento. Una gran variedad de

programas se desarrollan para diversas aplicaciones de

todo tipo.

Al usuario final de un programa sólo le interesan dos cosas:

1.-Que el programa sea fácil de manejar

2.-Que su ejecución sea lo más rápida posible.

Para mejorar este último aspecto cada día se tienen más

en cuenta las optimizaciones en el código del programa.

Optimización Local •Las optimizaciones locales se realizan sobre el bloque

básico

•Optimizaciones locales

Folding

Propagación de constantes

Reducción de potencia

Reducción de subexpresiones comunes

Objetivo de la optimización del código

Bloque Básico •Un bloque básico es un fragmento de código que

tiene una única entrada y salida, y cuyas instrucciones

se ejecutan secuencialmente. Implicaciones:

–Si se ejecuta una instrucción del bloque se ejecutan

todas en un orden conocido en tiempo de compilación.

•La idea del bloque básico es encontrar partes del

programa cuyo análisis necesario para la optimización

sea lo más simple posible.

Bloque Básico •Un bloque básico es un fragmento de código que tiene

una única entrada y salida, y cuyas instrucciones se

ejecutan secuencialmente. Implicaciones:

–Si se ejecuta una instrucción del bloque se ejecutan

todas en un orden conocido en tiempo de compilación.

•La idea del bloque básico es encontrar partes del

programa cuyo análisis necesario para la optimización sea

lo más simple posible.

Page 4: Tecnicas de mejoramiento de codigo (autoguardado)

Ejemplo de Optimización Global: Variables Vivas

Ejemplo de Optimización Global Expandir el Bucle

Eliminar J y k por que no se utilizan y

realizar los cálculos entre constantes

Ejemplo de Optimización Global Propagación de Constantes

Optimización Global • Grafo del flujo de ejecución

– Antes de realizar una optimización global es necesario crear el grafo de flujo de ejecución.

– El grafo de flujo de ejecución representa todos los caminos posibles de ejecución del programa.

– La información contenida en el grafo es útil para

• El programador y • El optimizador

• La optimización global a partir del análisis del grafo del flujo de ejecución permite

– Una propagación de constantes fuera del bloque básico.

– Eliminación del código no utilizado

– Una mejor asignación de los registros.

–Etc. • Problema: la optimización global es muy costosa en tiempo de compilación

Page 5: Tecnicas de mejoramiento de codigo (autoguardado)

Mundo Tecnológico

Robotica

La robótica es una ciencia o rama de la tecnología, que estudia el diseño y construcción de máquinas capaces de desempeñar tareas realizadas por el ser humano o que requieren del uso de inteligencia. Las ciencias y tecnologías de las que deriva podrían ser: el álgebra, los autómatas programables, las máquinas de estados, la mecánica o la informática.

Robot de Sony

Esta pequeña maravilla tecnológica, que es capaz de conversar, caminar, bailar, esquivar objetos, etc., esta creación demuestra el desarrollo tecnológico de la compañía, quien se suma de manera rápida en la categoría de productor de humanoides, recordemos que esta posición anteriormente solo estaba dominada por la empresa Honda, quien creo el primer humanoide bípedo llamado "Asimo".

El prototipo mide 58 centímetros y tiene gran

inteligencia artificial...

Tokio.- Ladrones, tened cuidado, los guardias

robots estás aquí. En una idea que parece salida

directamente de la ciencia ficción, los robots

podrían pronto empezar a patrullar las oficinas,

galerías de tiendas y bancos de Japón para

mantenerlos a salvo de los intrusos.

Page 6: Tecnicas de mejoramiento de codigo (autoguardado)

1.2. Impacto en la Educación. El auge de la Robótica y la imperiosa necesidad de su implantación en numerosas instalaciones industriales, requiere el concurso de un buen número de especialistas en la materia. La Robótica es una tecnología multidisciplinar. Hace uso de todos los recursos de vanguardia de otras ciencias afines, que soportan una parcela de su estructura. Destacan las siguientes:

Mecánica. Cinemática. Dinámica. Matemáticas. Automática. Electrónica. Informática. Energía y actuadores eléctricos, neumáticos e

hidráulicos. Visión artificial. Sonido de máquinas. Inteligencia artificial.

La robótica como una disciplina

Realmente la Robótica es una combinación de todas las disciplinas expuestas, más el

conocimiento de la aplicación a la que se enfoca, por lo que su estudio se hace especialmente

indicado en las carreras de Ingeniería Superior y Técnica y en los centros de formación

profesional, como asignatura práctica. También es muy recomendable su estudio en las

facultades de informática en las vertientes dedicadas al procesamiento de imágenes, inteligencia

artificial, lenguajes de robótica, programación de tareas, etc.

Intelligent Servo

Actuator, es uno de los

mecanismos

desarrollados para que

los robots pueda mover

sus puntos de

articulación con gran

fluidez y rápida

respuesta, que le

permite caminar por

superficies irregulares y

mantener el equilibrio,

posee entre otras

cosas un programa de

caídas, que actúa en

caso que hubiera sido

inestabilizado hasta

perder el equilibrio,

permitiendo que se

ponga de pie

nuevamente.

Page 7: Tecnicas de mejoramiento de codigo (autoguardado)

Tiene tres hermanas, Randi, Arielle, Donna y

una novia de nombre Priscilla Chan con quien

firmó un contrato de noviazgo donde

acordaron verse únicamente una vez por

semana y nunca ventilar sus vidas por

Facebook

Los compañeros de Zuckerberg en la Universidad de Harvard,

Divya Narendra, Cameron Winklevoss y Tyler Winklevoss,

denunciaron que lo contrataron para que terminase el código de

su sitio Internet, Connectu y que Zuckerberg les robó la idea, el

diseño, el plan comercial y el código fuente.

Mark

Zuckerberg

ocupa el

puesto

número 785

en la lista de

las personas

más ricas del

planeta. Mark Zuckerberg en el 2004 se

le ocurrió una idea que cambió la

forma de relacionarse de más de

200 millones de personas en el

mundo: Creó Facebook.

Primero como una red

social para la Universidad

de Harvard. A los pocos

meses los estudiantes de

ésta universidad

comenzaron a agregar a

otros, pronto matriculas

enteras de la Universidad

de Boston, el MIT,

Stanford, Columbia, Yale y

Princeton tenían una

cuenta en la red social. Hoy

su éxito ya comienza a ser

leyenda.

El joven es

judío, nunca

se levanta

temprano, es

una persona

sencilla y

vive sin la

menor

pretensión,

viste de

jeans,

camiseta y

sandalias. Fue acusado de manipular información de la

red de la Universidad de Harvard, nunca se lo

comprobaron, pero el departamento de

servicios informáticos de la escuela lo acusó

ante las autoridades por infringir la seguridad

informática y violar las políticas de privacidad

y propiedad intelectual de la universidad.

Los directivos de Harvard insistieron en que

Zuckerberg había atacado el sistema Internet

del colegio para alterar imágenes de los

estudiantes sin autorización y para su propio

beneficio. Él se defendió diciendo que la

información debería ser libre y abierta al

público.

Page 8: Tecnicas de mejoramiento de codigo (autoguardado)

¿Facebook se asemeja a un régimen virtual?

¿Facebook pretende ser libertad?

¿Facebook ayuda a la CIA?

Aunque el proyecto fue concebido por la estrella mediática Mark, la cara de

Facebook es el capitalista y filósofo futurista Peter fell.

La CIA se encarga de encontrar medios tecnológicos que puedan proveer

información a la agencia central de investigación de estados unidos. La CIA utiliza

a Facebook como base de pruebas y fuente de información sobre todos sus

usuarios.

La realidad de Facebook y de sus inversores, una estrella mediática, un filósofo

futurista que quiere destruir a su propio país y uno que implica a Facebook

directamente con la CIA. Ellos han creado su propio país.

"No construimos servicios para

ganar dinero, hacemos dinero para

construir mejores servicios"

Creador del Facebook

es el millonario más

joven del mundo

Facebook es azul

porque Zuckerberg es

daltónico.

Facebook actualmente

tiene 140 millones de

usuarios y 2 millones

de usuarios se le unen

cada día.

Conecta realmente Facebook a la gente

“Si la gente no sabe que estoy

haciendo no soy nadie “

Lo que muchos usuarios no

saben es que de acurdo a las

condiciones del contrato que

virtualmente asumen le

otorgan a Facebook la

propiedad perpetua y exclusiva

de toda la información e

imágenes que publican.

Atención

En ese contrato que la

mayoría no lee, hay una

parte que dice “aquellos que

deseen desactivar su cuenta

de Facebook pueden hacerlo

en la página, Mi cuenta. La

información eliminada

podría permanecer en copias

de seguridad dentro de un

tiempo razonables”.

¿Qué demonios sucede con mis datos?

Al finales del 2007 Facebook vende 1,6 % de su compañía Microsoft a cambio de que este se convirtiera en una

herramienta que proporciona una amplia base de datos real de sus usuarios. Esto le permitió a Facebook

proporcionar el contenido de los usuarios a terceros y multinacionales. A los creadores de Facebook les basta con

cruzarse de brazos y ves cómo millones de adictos transmiten voluntariamente sus datos personales, imágenes y

cosas que para ellos son importantes.

Page 9: Tecnicas de mejoramiento de codigo (autoguardado)

¡CUÁ L ES EL MEJOR SISTEMÁ OPERÁTIVO EN SMÁRTPHONES?

Básicamente, un sistema operativo proporciona las funciones principales para el dispositivo electrónico, tales como el reconocimiento de entrada y la visualización de la interfaz de usuario dentro de la pantalla. Pero además, dependiendo del sistema operativo que utilice el teléfono, también se verá afectada la rapidez y la fiabilidad de todos los procesos.

Actualmente, existen una enorme

variedad de tipos de sistemas

operativos para teléfonos móviles, y

entre los OS (sistemas operativos)

más conocidos y populares nos

encontramos con Android, iOS,

BlackBerry OS y Windows

Phone. Por lo general la mayoría de

estos sistemas operativos se

encuentran asociados con

determinadas marcas de

teléfonos, fabricados por empresas

específicas. Otros teléfonos, en

cambio, están disponibles para una

variedad de plataformas, pero

¿Cuáles son las ventajas que puedo

encontrar en cada uno de estos

sistemas operativos?

A continuación te mostraremos algunas características

de los sistemas operativos más famosos que existen en

el mercado para telefonía celular

Page 10: Tecnicas de mejoramiento de codigo (autoguardado)

Características esenciales de Android

Originalmente desarrollado por una organización independiente y

basado en el sistema operativo Linux, el llamado Android OS es

actualmente el sistema que comercializa la compañía Google para

smartphones y tablets. Desde su creación y hasta la actualidad, se

trata de un sistema operativo que continúa siendo de distribución libre

y código abierto, lo que ha hecho que Android siga siendo elogiado

por una enorme cantidad de usuarios, debido a su flexibilidad.

Tengamos en cuenta

que cualquier persona

puede desarrollar

aplicaciones para

Android, y cualquier

empresa puede lanzar

un teléfono o una tablet

incluyéndolo como OS

preinstalado.

Por ello, una de las grandes ventajas que posee este

sistema operativo radica en que actualmente existe una

disponibilidad de miles y miles de aplicaciones

gratuitas y de pago que los usuarios pueden aprovechar

para optimizar el uso de su dispositivo con Android.