-
Notifications
You must be signed in to change notification settings - Fork 56
Expand file tree
/
Copy pathbenchmark3.js
More file actions
70 lines (52 loc) · 1.43 KB
/
benchmark3.js
File metadata and controls
70 lines (52 loc) · 1.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
//
// Quantum Fourier Transform
//
var QuantumCircuit = require("../lib/quantum-circuit.js");
console.log("Qubits\tTime ms\tMemory MB");
for(var qubits = 2; qubits <= 25; qubits++) {
var circ = new QuantumCircuit(qubits);
for(var i = 0; i < qubits; i++) {
circ.addGate("h", -1, i);
var rcount = 0;
for(var x = i + 1; x < qubits; x++) {
rcount++;
circ.addGate("cu1", -1, [x, i], {
params: {
lambda: "pi/" + (1 << rcount)
}
});
}
}
for(var i = 0; i < Math.floor(qubits / 2); i++) {
circ.addGate("swap", -1, [i, (qubits - i) - 1]);
}
circ.run();
var heapUsedMB = process.memoryUsage().heapUsed / 1024 / 1024;
console.log(qubits + "\t" + circ.stats.duration + "\t" + heapUsedMB.toFixed(2));
}
/*
console.log("Qubits\tTime ms\tMemory MB");
for(var qubits = 2; qubits <= 25; qubits++) {
var circ = new QuantumCircuit(qubits);
var lastQubit = qubits - 1;
for(var i = lastQubit; i >= 0; i--) {
circ.addGate("h", -1, i);
if(i > 0) {
w = i - 1;
for(var x = lastQubit; x > w; x--) {
circ.addGate("cu1", -1, [w, x], {
params: {
lambda: "pi/" + (1 << (x - w))
}
});
}
}
}
for(var i = 0; i < Math.floor(qubits / 2); i++) {
circ.addGate("swap", -1, [i, (qubits - i) - 1]);
}
circ.run(null, { partitioning: false });
var heapUsedMB = process.memoryUsage().heapUsed / 1024 / 1024;
console.log(qubits + "\t" + circ.stats.duration + "\t" + heapUsedMB.toFixed(2));
}
*/