Archivo

Entradas Etiquetadas ‘porcentaje’

Los países que más colaboran con GNU

Martes, 23 de Noviembre de 2010 Gaspar Fernández 4 comentarios

Le esto: GNU Contributor Statistics for November 2010 y me pareció curioso crear un ranking con los 15 países que más colaboran:

Country Contributors % contr
USA 1308 28,0386
Germany 654 14,0193
France 360 7,7170
UK 208 4,4587
Canada 207 4,4373
Japan 196 4,2015
Sweden 178 3,8156
Australia 144 3,0868
India 127 2,7224
Netherlands 113 2,4223
Italy 109 2,3365
Russia 95 2,0364
Austria 88 1,8864
Spain 84 1,8006
China 79 1,6935

Como vemos, En España estamos en 15º. Ahora se me ocurrió ampliar esta información añadiendo la población estimada para 2010 de cada uno de los países. Extraída de Wikipedia. Y obtengo la siguiente lista de países (He excluído Luxemburgo, Lietchtenstein, Montenegro e Islandia por tener menos de un millón de habitantes y atentar con fastidiarme la estadística, por tener mucho porcentaje de colaboración por habitante):

Country Contributors Population 2010 Contributors / Pop (ppm) % contr
Sweden 178 9.401.925 18,9323 3,8206
Austria 88 8.396.760 10,4802 1,8888
Denmark 58 5.557.709 10,4360 1,2449
Slovenia 20 2.058.400 9,7163 0,4293
Norway 44 4.911.800 8,9580 0,9444
Germany 654 81.802.000 7,9949 14,0373
New Zealand 35 4.388.100 7,9761 0,7512
Ireland 32 4.470.700 7,1577 0,6868
Netherlands 113 16.629.600 6,7951 2,4254
Finland 36 5.374.600 6,6982 0,7727
Australia 144 22.534.000 6,3903 3,0908
Canada 207 34.323.000 6,0309 4,4430
Israel 44 7.653.600 5,7489 0,9444
Switzerland 44 7.782.900 5,6534 0,9444
France 360 65.447.374 5,5006 7,7270

Es esta tabla, en españa estamos los 25º, siendo más de 60… no está mal.

Dejo el archivo en formato ODS aquí (19Kb)

Cronometrar código (matlab)

Miércoles, 27 de Mayo de 2009 blakeyed Sin comentarios

Matlab® es un lenguaje muy utilizado en ingeniería, ya que permite hacer de forma más o menos sencilla cálculos matemáticos muy complejos, y a veces necesitamos procesar gran cantidad de datos y llega a ser desesperante ver cómo tarda sin tener tan siquiera una ligera idea de cuánto queda.

El principio del código que voy a postear se basa en dos funciones: tic y toc. La primera de ellas marca el inicio de la cuenta de tiempo, y la segunda el final, indicándonos los segundos transcurridos entre tic y toc. Podemos por ejemplo hacer esto:

1
2
3
tic
% Tarea que tarda mucho
toc

Y nos devolverá los segundos en total que ha tardado.

Pero vamos a ir algo más allá. Imaginemos que tenemos una tarea iterativa de N iteraciones, queremos que cada N/20 iteraciones nos diga más o menos lo que queda (en cada iteración sería mucho, porque estaría todo el rato diciendo el tiempo, y además gastando tiempo en ello; por lo que tendríamos que esperar mucho más de lo necesario).

Éste es el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
N=2000;

aviso=100;

tic % Inicia el contador de tiempo
for n=0:N

    % Calculamos el progreso total y los tiempos estimado y restante
    if (mod(n, aviso)==0)
        progreso=n/N;       % Progreso (Entre 0 y 1)
        transcurrido=toc;   % Tiempo transcurrido
        estimado=transcurrido/progreso; % Estimamos el tiempo total
        queda = estimado-transcurrido;  % Tiempo restante
        % Lo mostramos todo en pantalla
        disp(sprintf('Progreso %2.2f%%. Tiempo Transcurrido: %ds. Tiempo estimado: %ds. Tiempo restante %ds.', progreso*100, round(transcurrido), round(estimado), round(queda)));    
    end
   
    % Esto se supone que es una tarea que tarda mucho tiempo
    pause(0.01);
end

disp('Completado!');

Visita otras webs de la red