Skip to content
Snippets Groups Projects
Commit 982fba8e authored by Guyslain Naves's avatar Guyslain Naves
Browse files

initialisation du projet

parent 41404edd
No related branches found
No related tags found
No related merge requests found
# L2StructureDiscreteTP1 # L2StructureDiscreteTP1
L2 Informatique, Université d'Aix-Marseille.
Embryon pour le TP1 du cours Structures Discrètes
# utilisation de gnuplot
Exemple de script à utiliser au début.
```gnuplot
plot 'divideNative.dat' using 1:2 with lines title "native time",\
'divideNative.dat' using 1:3 with lines axis x1y2 title "native operations"
pause mouse
```
Explications succintes (voir la documentation pour plus de détails) :
- `using 1:3` : les données des colonnes 1 et 3 sont utilisées pour coordonnées x et y respectivement.
- `with lines` : connecte les points du graphe par des segments.
- `title "native time"` : ajoute la légende de cette courbe.
- `axis x1y2` utilise l'axe horizontal du bas (`x1`) et l'axe vertical de droite (`y2`), utile pour afficher deux courbes dont les valeurs n'ont pas le même ordre de grandeur.
- `pause mouse` : affiche le graphique et attend le prochain clic pour terminer.
public class Chrono {
private long lastStartTime;
private boolean running = false;
private long elapsedTime = 0;
public void start() {
if (running) return;
running = true;
lastStartTime = System.nanoTime();
}
public double stop() {
if (running) {
running = false;
elapsedTime = elapsedTime + System.nanoTime() - lastStartTime;
}
return getElapsedTime();
}
public double getElapsedTime() {
return 1e-9 * (double) elapsedTime;
}
public void restart() {
reset();
start();
}
public void reset() {
elapsedTime = 0;
running = false;
}
}
public interface DivideAlgorithm {
int run(int numerator, int denominator);
int getOperationCount();
}
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
public class Main {
private static Chrono chrono = new Chrono();
public static void main(String args[]) throws IOException {
DivideAlgorithm divider = new NativeDivideAlgorithm();
Writer file = new FileWriter("divideNative.dat");
for (int i = 200_000; i < 10_000_000; i = i + 200_000) {
chrono.restart();
int q = divider.run(i, 2);
chrono.stop();
file.write(i + " " + chrono.getElapsedTime() + " " + divider.getOperationCount() + "\n");
}
file.close();
}
// Comment plotter les données avec gnuplot :
// plot 'divideBySubtract.dat' using 1:2 with lines title "time",\
// 'divideBySubtract.dat' using 1:3 with lines axis x1y2 title "iterations"
}
public class NativeDivideAlgorithm implements DivideAlgorithm {
private int operationCount = 0;
@Override
public int run(int numerator, int denominator) {
operationCount = 0;
operationCount++;
return numerator/ denominator;
}
@Override
public int getOperationCount() {
return operationCount;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment