elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Duda sobre codigo Eficiencia
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Duda sobre codigo Eficiencia  (Leído 5,704 veces)
lexoazul

Desconectado Desconectado

Mensajes: 48


Ver Perfil
Duda sobre codigo Eficiencia
« en: 30 Agosto 2010, 23:51 pm »

Hola a todos, la verdad que tengo una gran duda me dejaron un trabajo de la escuela pero quisiera que me ayudaran para poder realizarla.
El problema es que tengo que contar cuanta eficiencia tiene un codigo
Es decir por cada asignacion,operacion aritmetica o logica tiene un valor de 2 nanosegundos. por ejemplo en una asignacion de variable:

Código:
int x=0;      //Esta asignacion tiene un valor de 2 nanosegundos

El problema es en un for ejemplo:
Código:
int y = 5;         //2 nanosegundos
for(int i=0;x<y;i++){     //aqui llevo 6 nanosegundos
}                                  //total 8 nanosegundos 

El principal problema es que el codigo lo tengo que leer desde un .txt; es decir la duda es saber cuantos nanosegundos van hacer, considerando que en cada ciclo del for son 8 nanosegundos; osea en total por le for de arriba seran 40 mas la asignacion de la variable y.

Les agradeceria mucho por su ayuda. Nuevamente gracias


En línea

Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: Duda sobre codigo Eficiencia
« Respuesta #1 en: 31 Agosto 2010, 00:30 am »

Donde conseguiste exactamente esos valores?
Es parte de un trabajo de Cómputo?
Si te digo la verdad estas cosas solo las habia hecho con C pero si me dices donde hay una lista con los tiempos o una documentación al respecto, prometo ayudarte en lo que me sea posible.

Saludos


En línea

egyware


Desconectado Desconectado

Mensajes: 526



Ver Perfil WWW
Re: Duda sobre codigo Eficiencia
« Respuesta #2 en: 31 Agosto 2010, 00:38 am »

Código:
int x=0;      //Esta asignacion tiene un valor de 2 nanosegundos
El problema es en un for ejemplo:
Código:
int y = 5;         //2 nanosegundos
for(int i=0;x<y;i++){     //aqui llevo 6 nanosegundos
}                                  //total 8 nanosegundos 

Hola

Dudo que ese for dure en total 8 nanosegundos, no me refiero el valor si no por la condicion que se se repite hasta que el programa se cierre.

Primero te recomiendo que derives la complejidad del algoritmo
por ejemplo
Código
  1. for (int i=0;i<10;i++){
  2. //algo de ejecución constante 1
  3. }
  4.  
Eso como intera n veces siempre osea el algoritmo es de orden O(n) con n = 10.
Como ya sabemos el orden de complejidad, asumo que cada instruccion se demora 2 nanosegundos, entonces tengo en total que ese simple for se demorara n * 2 ns, con n = 10 osea 20 nanosegundos.

Saludos espero que me hayas entendido

En línea

lexoazul

Desconectado Desconectado

Mensajes: 48


Ver Perfil
Re: Duda sobre codigo Eficiencia
« Respuesta #3 en: 31 Agosto 2010, 01:59 am »

gracias por contestar.
Bueno los datos del tiempo en cuanto va a tardar lo asigne es decir; solo dije que por cada asignacion va a tardar 2 nanosegundos.

consideracion:
por cada asignacion(=) tardara 2 nanosegundos.
por cada operacion aritmetica(+,-,/,*) tardara 2 nanosegundos.
por cada operacion logica(|,&,++) tardara 1 nanosegundo.
Solo lo designamos al azar.

Como decia en el ejemplo del for
Código:
for(int i=0;i<10;i++)
{
}
considerando que en cada ciclo del for son 6 nanosegundos; osea en total por el for de arriba seran 60.

es decir por el int = 1  //son dos nanosegundos
el i<10   //seran 2 nanosegundos
y el i++    //seran 2nanosegundos
en total por el primer ciclo seran 6 nanosegundos
por los 10 ciclos seran entonces 60 nanosegundos.

Espero haya quedado claro el ejemplo.
bueno el principal problema es que el codigo lo tengo que leer desde un .txt
y mi programa(hecho en java) debe de contar el total del tiempo en que va a tardar todo el proceso(tomando encuenta las consideraciones de arriba).

Estaba pensando en leer todo el codigo y dividirlo por caracter; despues ir buscando el simbolo de asignacion(=), o el de alguna operacion aritmetica(+,-,/,*)
y ya que lo encontrara, iria sumando el tiempo. Como decia el problema es en un for porque tengo que tener encuenta que son varios ciclos y no se como decirle eso a mi programa.

Gracias egyware y Debci, Espero me hayan entendido y claro espero me sigan ayudando, estare pendiente sobre el tema.
Gracias por su ayuda.
En línea

egyware


Desconectado Desconectado

Mensajes: 526



Ver Perfil WWW
Re: Duda sobre codigo Eficiencia
« Respuesta #4 en: 31 Agosto 2010, 02:08 am »

Ohhhh osea tu tienes que leer el programa y todo =S
vaya que dificil
Por lo que entendí debes leer y entender el programa dentro del txt, osea hacer un interprete D:
Por lo menos mucho no te puedo ayudar.

Podrias usar analizadores de sintaxis aunque desconozco si pueden servirte como realmente funcionan como Bison, ANTLR, Lex, Yacc
http://en.wikipedia.org/wiki/Parsing

Saludos
En línea

[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Duda sobre codigo Eficiencia
« Respuesta #5 en: 31 Agosto 2010, 02:16 am »

Pero eso es relativo, por qué no le dices a tu profe que eso no funciona :P

La mejor forma de hacerlo sería la diferencia de tiempo y correrlo unas 10 veces, eliminar el record más bajo y el más alto, para luego sacar un promedio. Algo así sería ideal. Ya que si por ejemplo, de la manera como tú lo haces, en el for haces una condición y si es verdadero haces i-- ya se comienza a hacer casi imposible medir el rendimiento de esa manera.

Saludos!
En línea

Leyer


Desconectado Desconectado

Mensajes: 786


leyer@elhacker.net


Ver Perfil WWW
Re: Duda sobre codigo Eficiencia
« Respuesta #6 en: 31 Agosto 2010, 03:20 am »

No esta dificil con tan pocas consideraciones, si tratas con strings no habrá problemas, otra cosa es cuarquier fuente que leera o un fuente ya propuesto?  
« Última modificación: 31 Agosto 2010, 03:29 am por LEYER » En línea

lexoazul

Desconectado Desconectado

Mensajes: 48


Ver Perfil
Re: Duda sobre codigo Eficiencia
« Respuesta #7 en: 31 Agosto 2010, 21:55 pm »

gracias a todos.
Citar
No esta dificil con tan pocas consideraciones, si tratas con strings no habrá problemas

como que consideraciones serian? pensaba en eso que sea puros string y despues separarlos caracter por caracter y guardarlo en un arreglo para luego ir comparando con las consideraciones antes mencionadas.

Es una fuente ya propuesta ejemplo:
Código:
public class InsercionDirecta
{
int v;
public InsercionDirecta()
{
}
public void pasadas(int []A)
{
int n=A.length;
for(int i=0;i<n;i++){
int v=A[i];
int j=i-1;

            while (j >= 0 && A[j] > v)
          {
                  A[j + 1] = A[j];
                  j--;
          }
                A[j + 1] = v;
         
        }
       
        for(int r=0;r<A.length;r++){
          System.out.print(A[r]+",");
             }
}
public static void main(String arg[])
{
        int[]b={7,3,9,40,5,3,2,6};
InsercionDirecta id=new InsercionDirecta();
id.pasadas(b);
}

}
de este codigo voy a determinar con las consideraciones.
consideracion:
por cada asignacion(=) tardara 2 nanosegundos.
por cada operacion aritmetica(+,-,/,*) tardara 2 nanosegundos.
por cada operacion logica(|,&,++) tardara 1 nanosegundo.


En línea

Dznp

Desconectado Desconectado

Mensajes: 119


Ver Perfil
Re: Duda sobre codigo Eficiencia
« Respuesta #8 en: 31 Agosto 2010, 22:07 pm »

Hola! :D

Te recomendaría que aclares que tipo de codigo necesitarias verificar, si el source de un programa o un simple txt que tenga 3 variables y un for.

Quizas te podamos ayudar así.

Suerte.
En línea

lexoazul

Desconectado Desconectado

Mensajes: 48


Ver Perfil
Re: Duda sobre codigo Eficiencia
« Respuesta #9 en: 31 Agosto 2010, 22:19 pm »

Es un txt que tiene el siguiente codigo
Código:
public int sumar(){
int numero;
int suma;
for (numero = 1 ;numero <= 100 ;numero++)
suma = suma+numero
return  suma;
}

Este es el codigo que tengo que verificar.
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda sobre eficiencia
Bases de Datos
_LooSeR_ 7 5,065 Último mensaje 11 Febrero 2011, 16:30 pm
por mit
Duda sobre patente y si debo registrar un código « 1 2 »
Foro Libre
dimitrix 12 5,325 Último mensaje 9 Marzo 2011, 01:27 am
por dimitrix
Ejercicios Y Ejemplos Sobre Costo Algoritmico/Eficiencia De Un Algoritmo
Ejercicios
TeclaFurtiva 1 6,319 Último mensaje 30 Mayo 2012, 13:05 pm
por TomaSs
duda de la eficiencia del Ordenamiento por combinacion - mezcla - merge sort
Programación General
jhonatanAsm 4 2,871 Último mensaje 13 Julio 2012, 22:08 pm
por jhonatanAsm
Duda sobre codigo
Programación C/C++
javituni 5 2,424 Último mensaje 13 Abril 2013, 18:01 pm
por javituni
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines