OVH Cloud OVH Cloud

pc-linux Planet-saturn, retour d'expérience

346 réponses
Avatar
cloche
Bonjour à tous,

Donc je bosse dans un collège, et la saison des subvention permet
d'acheter des poste. Et ceux de PS étant intéressant niveau prix/config,
ce sont ceux qu'on a acheté.

Résultat : Le Mandrake linux Discovery annoncé est en fait un Linpus
Linux, distribution basée Mdk, sur laquelle je n'ai pas réussit à faire
un chti urpmi, ni même à trouver un outil graphique pour maj.
Bref, moi qui espérait un peu là-dessus pour convaincre de faire migrer
la salle info sous linux, pas de pot avec cette config à 2 sous...
Ouais, je sais, on en a pour son argent. Mais quand même...

La fin de l'aventure, totalement HS ici, mais bon, c'est que j'ai tout
viré pour refoutre win98 dessus (et ouais, je sais :-(). Ai pour ça
utilisé une knoppix, et QTParted, en 2 fois (obligation de redémarrer au
milieu), pour pouvoir supprimer les partitions et préparer/formater en
fat32. Et le fin du fin, aucun pilote fourni. Heureusement qu'il y a un
site.

En bref, le prix, 350€ l'UC pour 80Go, Celeron D et 512 Mo Ram se justifie.

Er

10 réponses

Avatar
Eric Jacoboni
In article ,
Michel Billaud wrote:


(1) dont j'use et abuse dans le genre
$page = "<html> <head><title>Hello</title></head>";
$page .= "<body>";
foreach( $machins as $m)
$page .= $m -> html_code();


Moi, je n'utilise guère le foreach de PHP car il pue un peu du bec, à
vrai dire... Pour moi, un foreach devrait renvoyer du premier au dernier
élément, sans tenir compte de l'ordre d'insertion.

--
Jaco

Avatar
Emmanuel Florac
Le Sat, 14 May 2005 17:21:48 +0200, Eric Jacoboni a écrit :


Moi, je n'utilise guère le foreach de PHP car il pue un peu du bec, à
vrai dire... Pour moi, un foreach devrait renvoyer du premier au dernier
élément, sans tenir compte de l'ordre d'insertion.


J'ai pas compris. Si tu as un tableau, le seul ordre qui compte c'est
l'ordre du tableau, et si tu insères des éléments dans un tableau, ils
sont forcément numérotés par ordre d'arrivée, non? Ou bien tu es en
train de dire que PHP pue tellement que les hash renvoient leurs
éléments dans l'ordre d'insertion et ne sont que des tableaux
déguisés? (Ah ah ah ah).

--
Les défauts n'apparaissent qu'après que le programme a passé (avec
succès) la phase d'intégration.
Loi de Klipstein.

Avatar
Eric Jacoboni
In article ,
Emmanuel Florac wrote:

J'ai pas compris. Si tu as un tableau, le seul ordre qui compte c'est
l'ordre du tableau, et si tu insères des éléments dans un tableau, ils
sont forcément numérotés par ordre d'arrivée, non?


Ben non...

$tab[0] = 'A';
$tab[2] = 'C':
$tab[1] = 'B';

Maintenant, fait un foreach... Bon, faut aussi vouloir affecter un
tableau de cette façon, hein.

--
Jaco

Avatar
Richard Delorme
Ça j'arrive à le concevoir. Les [] servent à définir des listes et non
des ensembles. Programmer, ce n'est pas nécessairement faire des
mathématiques,


C'est pas Dijkstra qui disait que la programmation était une des branches
les plus difficiles des mathématiques appliquées ?


Dans son cas c'était plutôt une branche de la physique théorique.

A part montrer que Hope est plus verbeux et moins lisible que Haskell,
je ne vois pas l'intérêt de cet exemple.


Juste que c'est pareil, à trois virgules près, donc que les
différences de syntaxe on s'en tamponne grave.


Quand je vois, dans un tutorial sur Ocaml, trois pages pour expliquer
quand on peut mettre zéro, un ou trois point-virgules, je trouve que
ces histoires de virgules ne sont pas si anecdotiques.

Que le quicksort soit de complexité quadratique dans le pire des cas
n'est pas lié à la concaténation.


Non. La concaténation foireuse augmente le temps de calcul (qui a déja
pris des coups dans les plumes par deux balayages de la liste),


Ça dépend. Pour un langage interprété comme Python c'est
l'interprétation du code qui est le facteur limitant. Il faut sans doute
mieux plusieurs balayages de la liste par des outils du langage (comme
les listes en extension ou la concaténation), qu'un seul balayage par
une boucle entièrement interprétée.

pas la complexité.


Pourtant j'avais cru lire :
« Un quicksort quadratique à cause de la concaténation.»


J'avoue ne pas comprendre le problème.


Que quand quelqu'un me dit que le chronométrage n'a pas l'air
quadratique, je doute un peu qu'il ait vraiment testé sérieusement sur
un paquet d'exemples aléatoires bien choisis !


#-------8<------------------
import time, random

def qsort(x):
if len(x) > 1:
lt = [i for i in x if i < x[0] ]
eq = [i for i in x if i == x[0]]
gt = [i for i in x if i > x[0]]
return qsort(lt) + eq + qsort(gt)
else:
return x

if __name__ == "__main__":
print "taillettemps"
random.seed()
for n in (10000, 20000, 40000, 80000, 160000, 320000, 640000):
l = [random.randrange(1000000) for i in range(n)]
t = time.clock()
qsort(l)
t = time.clock() - t
print n, 't', t
#-------8<------------------

$ python qsort.py
taille temps
10000 0.22
20000 0.43
40000 0.96
80000 2.18
160000 4.84
320000 10.57
640000 21.81

Que le quicksort à partir d'un pivot fixe soit quadratique dans le pire
des cas, je le sais ; que le quicksort soit inefficace sur les petites
listes, je le sais aussi; et que Python ne brille pas par ses
performances est encore une évidence. Par contre, que l'implémentation
ci-dessus soit quadratique à cause de la concaténation, j'en doute.

--
Richard


Avatar
Emmanuel Florac
Le Sat, 14 May 2005 19:28:41 +0200, Eric Jacoboni a écrit :


Maintenant, fait un foreach... Bon, faut aussi vouloir affecter un tableau
de cette façon, hein.


Ça ne fait que confirmer ce que je pensais : PHP c'est vraiment de la
merde en barre.

--
on passe la moitié de son temps à refaire ce que l'on n'a pas eu le
temps de faire correctement.
Loi de Myers.

Avatar
talon
Richard Delorme wrote:
#-------8<------------------
import time, random

def qsort(x):
if len(x) > 1:
lt = [i for i in x if i < x[0] ]
eq = [i for i in x if i == x[0]]
gt = [i for i in x if i > x[0]]
return qsort(lt) + eq + qsort(gt)
else:
return x

if __name__ == "__main__":
print "taillettemps"
random.seed()
for n in (10000, 20000, 40000, 80000, 160000, 320000, 640000):
l = [random.randrange(1000000) for i in range(n)]
t = time.clock()
qsort(l)
t = time.clock() - t
print n, 't', t
#-------8<------------------

$ python qsort.py
taille temps
10000 0.22
20000 0.43
40000 0.96
80000 2.18
160000 4.84
320000 10.57
640000 21.81

Que le quicksort à partir d'un pivot fixe soit quadratique dans le pire
des cas, je le sais ; que le quicksort soit inefficace sur les petites
listes, je le sais aussi; et que Python ne brille pas par ses
performances est encore une évidence. Par contre, que l'implémentation
ci-dessus soit quadratique à cause de la concaténation, j'en doute.



En fait en adaptant le programme se trouvant ici:
http://www.hetland.org/python/quicksort.html
qui certes est moins concis que celui ci-dessus, mais a
l'avantage de ressembler directement au quicksort classique en C et
d'éviter les concaténations de listes perpétuelles, je trouve
exactement la même progression linéaire en n et un temps d'exécution divisé
par 2.




--

Michel TALON

Avatar
talon
Richard Delorme wrote:
#-------8<------------------
import time, random

def qsort(x):
if len(x) > 1:
lt = [i for i in x if i < x[0] ]
eq = [i for i in x if i == x[0]]
gt = [i for i in x if i > x[0]]
return qsort(lt) + eq + qsort(gt)
else:
return x

if __name__ == "__main__":
print "taillettemps"
random.seed()
for n in (10000, 20000, 40000, 80000, 160000, 320000, 640000):
l = [random.randrange(1000000) for i in range(n)]
t = time.clock()
qsort(l)
t = time.clock() - t
print n, 't', t
#-------8<------------------

$ python qsort.py
taille temps
10000 0.22
20000 0.43
40000 0.96
80000 2.18
160000 4.84
320000 10.57
640000 21.81

Que le quicksort à partir d'un pivot fixe soit quadratique dans le pire
des cas, je le sais ; que le quicksort soit inefficace sur les petites
listes, je le sais aussi; et que Python ne brille pas par ses
performances est encore une évidence. Par contre, que l'implémentation
ci-dessus soit quadratique à cause de la concaténation, j'en doute.



En fait en adaptant le programme se trouvant ici:
http://www.hetland.org/python/quicksort.html
qui certes est moins concis que celui ci-dessus, mais a
l'avantage de ressembler directement au quicksort classique en C et
d'éviter les concaténations de listes perpétuelles, je trouve
exactement la même progression linéaire en n et un temps d'exécution divisé
par 2.

Le même en Java
http://www.sourcecodesworld.com/articles/java/java-data-structures/Sorting_using_Quicksort.asp
prend moins d'une seconde sur le tableau de taille 640000.


--

Michel TALON

Avatar
Richard Delorme

En fait en adaptant le programme se trouvant ici:
http://www.hetland.org/python/quicksort.html
qui certes est moins concis que celui ci-dessus, mais a
l'avantage de ressembler directement au quicksort classique en C et
d'éviter les concaténations de listes perpétuelles, je trouve
exactement la même progression linéaire en n et un temps d'exécution divisé
par 2.


Outre la concision, on perd malheureusement une propriété intéressante
de la version avec concaténation : la stabilité du tri.

Le même en Java
http://www.sourcecodesworld.com/articles/java/java-data-structures/Sorting_using_Quicksort.asp
prend moins d'une seconde sur le tableau de taille 640000.


Sur x86, on peut obtenir les même gains qu'avec la version Java en
installant psyco¹, et en ajoutant les lignes suivantes au programme python :
try:
import psyco
psyco.full()
except:
print "Installer psyco pour de meilleurs performances."

¹ http://psyco.sourceforge.net/

--
Richard

Avatar
Michel Billaud
(Michel Talon) writes:


$ python qsort.py
taille temps
10000 0.22
20000 0.43
40000 0.96
80000 2.18
160000 4.84
320000 10.57
640000 21.81


Le même en Java
http://www.sourcecodesworld.com/articles/java/java-data-structures/Sorting_using_Quicksort.asp
prend moins d'une seconde sur le tableau de taille 640000.



Oui mais chacun sait que Java et PHP etc.

MB

--
Michel BILLAUD
LABRI-Université Bordeaux I tel 05 4000 6922 / 05 5684 5792
351, cours de la Libération http://www.labri.fr/~billaud
33405 Talence (FRANCE)


Avatar
Michel Billaud
Richard Delorme writes:

pas la complexité.


Pourtant j'avais cru lire :
« Un quicksort quadratique à cause de la concaténation.»


C'est pas parce que j'écris des conneries qu'il faut les relever !

MB
--
Michel BILLAUD
LABRI-Université Bordeaux I tel 05 4000 6922 / 05 5684 5792
351, cours de la Libération http://www.labri.fr/~billaud
33405 Talence (FRANCE)