Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - engel lex

#12411
de aqui el iso
puedes bajar la version que dice
CitarDownload - Auto-installer for USB Key (Win 9x/2k/xp/7) *NEW!*

lo que dice simorg es cierto, lo olvidaba :P

puedes intentar ver la temperatura con core temp y pedirle que haga un log para ver como fue el asunto
#12412
Bajate crystal disk info para asegurar que el disco duro esta en buena forma (indica aquí el estado del disco según dice el programa)

Bajate memtest para confirmar que no sean las ram (aquí informacion sobre ello, bajate el booteable Memtest86+)

Por lo que dices puede ser un problema en el hdd o ram, has esas 2 pruebas
#12413
Porque lo estas ejecutando desde la carpeta incorrecta, tienes que colocar la consola en lel directorio correcto
#12414
Sabes que el uso de ese programa viola la Ley Especial Contra Delitos Informaticos y hay casos abiertos contra gente por el uso del mismo cierto?

#12415
uff como se nota que tienes algo decente en relacion a mi perolita que recien revivió en estos dias jejeje

CitarEncontramos 1000000 numeros primos
Tiempo elapsado: 7422.899000

en relación a 23 segundos para mi jejeje

CitarNo estoy seguro del costo de las optimizaciones por el JRE pero para C deben ser nulas.

a que te refieres con "el costo"?
#12416
Cita de: MinusFour en 25 Enero 2015, 07:16 AM

printf("pasaron %d millisegundos",(endTime-startTime)/1000);


Prueba:


printf("pasaron %f millisegundos",((double)(endTime-startTime))/CLOCKS_PER_SEC);





for(control_for = 5; numero > (control_for * control_for); control_for+=6){


El cuadrado de los primos devuelve que es primo porque el cuadrado de los primos tecnicamente no es menor al cuadrado de los primos.

realmente la doble precisión es poco importante en este caso, y el compilador (netbeans) me muestra el tiempo de ejecución, siendo similar al del ejecutable, fijate que incluso lo imprimo sin decimales porque no los quería :s (los decimales representarían menos de 1/1000% de diferencia ya que los tiempos manejados están en el orden de >20segundos)

sobre el ciclo tienes razón... se me pasó esa comparacion... igual, haciendo los cambios

cambiando la linea 35 tanto de C y la 32 de Java a
for(control_for = 5; numero >= control_for * control_for; control_for+=6){

y cambiando en C la linea 26 a
printf("pasaron %.2f millisegundos",(double)(endTime-startTime)/1000);

sigo teniendo un margen de (a 1.000.000 de primos) C con 23 segundos y Java con 26 segundos, sigue estando en el orden de 15%...  entonces Java hace muy buen trabajo, mucho mejor de la reputación que le dan... o no? mi comparación no toca puntos reales? (me refiero juego solo con velocidad de procesamiento y eficiencia de asignación a memoria que es con lo que juego aquí)
#12417
estás seguro que el ejecutable de python está en esa dirección? yo uso mint y el ejecutable está en

/usr/bin/python
#12418
hola! siempre había pensado que Java sería mucho más lento que C... pero estuve haciendo pruebas y rebate mi teoría a un punto despreciable... no se si es error mio o que, pero compilo el código que pondré a continuación en Java y en C y el tiempo es MUY similar (diferencia menos de 10%)

antes que nada quisiera dejar claro que no se Java... hice la conversión como pude...

quisiera que uds opinaran, me dijeran si mi método de evaluación está mal o si solo eran mis creencias...

los pongo a competir en algo donde pueden pelear con características tan similares como sea posible... calculando n números primos... y haciendo ambos códigos tan idénticos como es posible... dejo a continuación mis pruebas

a 1.000.000 de primos generados y almacenados en el array, C tarda en promedio 23 segundos y Java 25...

El codigo en C
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int es_primo(long numero);

int main(int argc, char** argv) {
    clock_t startTime = clock();
    int cantidad = 1000000;
    int encontrados = 0;
    long numero = 1;
    long primos[cantidad];
    while(encontrados < cantidad){
        numero++;
        if(es_primo(numero)){
            primos[encontrados++] = numero;
        }
    }
    clock_t endTime = clock();
    /*
    int i;
    for(i=0;i<cantidad; i++){
        printf("%d-",primos[i]);
    }
    */
    printf("pasaron %d millisegundos",(endTime-startTime)/1000);


    return (EXIT_SUCCESS);
}
int es_primo(long numero){
    long control_for = 0;
    if(numero <= 3) return 1;
    if(numero % 2 == 0 ||numero % 3 == 0) return 0;
    for(control_for = 5; numero > control_for * control_for; control_for+=6){
        if(numero % control_for == 0 || numero % (control_for + 2)==0) return 0;
    }
    return 1;
    }


el codigo en java
Código (java) [Seleccionar]
package numerosprimos;

import java.util.*;
import java.lang.*;
import java.io.*;

public class NumerosPrimos {

    public static void main (String[] args){

        long startTime = System.currentTimeMillis();
        int cantidad = 1000000;
        int encontrados = 0;
        long numero = 1;
        long[] primos = new long[cantidad];
        while(encontrados < cantidad){
            numero++;
            if(es_primo(numero)){
                primos[encontrados++] = numero;
            }

        }
        long endTime = System.currentTimeMillis();
        //System.out.println(Arrays.toString(primos));
        System.out.println("pasaron: " + (endTime - startTime) + " millisegundos");

    }
    public static boolean es_primo(long numero){
        long control_for = 0;
        if(numero <= 3) return true;
        if(numero % 2 == 0 ||numero % 3 == 0) return false;
        for(control_for = 5; numero > control_for * control_for; control_for+=6){
            if(numero % control_for == 0 || numero % (control_for + 2)==0) return false;
        }
        return true;
    }
   
}
#12419
el uso del break no es malo... es eso o peor aún, llevar la variable de control a su ultima consecuencia...

java no es interpretado realmente porque el si compila y crea un binario ejecutable... solo que lo ejecuta solo dentro de su maquina virtual (es algo similar para .net)... realmente no se java como para juzgar los codigos, pero java si es ampliamente más lento que C estoy probando y no es tan lento jejeje
#12420
los nombres de la funcion como tal en el codigo no... eso no queda al compilarse hasta donde se, si no la ing inversa de los programas sería mucho más facil, me parece...