Skip to content

Commit 7a4ebce

Browse files
committed
Update nbody benchmark to more idiomatic Rust; nix obsolete comments
1 parent eb28b76 commit 7a4ebce

File tree

1 file changed

+27
-31
lines changed

1 file changed

+27
-31
lines changed

src/test/bench/shootout-nbody.rs

Lines changed: 27 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -22,29 +22,25 @@ fn main(args: ~[str]) {
2222
args
2323
};
2424
let n = int::from_str(args[1]).get();
25-
let bodies: ~[Body::props] = NBodySystem::MakeNBodySystem();
25+
let bodies: ~[Body::props] = NBodySystem::make();
2626
io::println(#fmt("%f", NBodySystem::energy(bodies)));
27-
let mut i: int = 0;
27+
let mut i = 0;
2828
while i < n { NBodySystem::advance(bodies, 0.01); i += 1; }
2929
io::println(#fmt("%f", NBodySystem::energy(bodies)));
3030
}
3131

32-
// Body::props is a record of floats, so
33-
// vec<Body::props> is a vector of records of floats
34-
3532
mod NBodySystem {
3633

37-
fn MakeNBodySystem() -> ~[Body::props] {
38-
// these each return a Body::props
34+
fn make() -> ~[Body::props] {
3935
let bodies: ~[Body::props] =
4036
~[Body::sun(), Body::jupiter(), Body::saturn(), Body::uranus(),
41-
Body::neptune()];
37+
Body::neptune()];
4238

43-
let mut px: float = 0.0;
44-
let mut py: float = 0.0;
45-
let mut pz: float = 0.0;
39+
let mut px = 0.0;
40+
let mut py = 0.0;
41+
let mut pz = 0.0;
4642

47-
let mut i: int = 0;
43+
let mut i = 0;
4844
while i < 5 {
4945
px += bodies[i].vx * bodies[i].mass;
5046
py += bodies[i].vy * bodies[i].mass;
@@ -54,16 +50,16 @@ mod NBodySystem {
5450
}
5551

5652
// side-effecting
57-
Body::offsetMomentum(bodies[0], px, py, pz);
53+
Body::offset_momentum(bodies[0], px, py, pz);
5854

5955
ret bodies;
6056
}
6157

6258
fn advance(bodies: ~[Body::props], dt: float) {
6359

64-
let mut i: int = 0;
60+
let mut i = 0;
6561
while i < 5 {
66-
let mut j: int = i + 1;
62+
let mut j = i + 1;
6763
while j < 5 { advance_one(bodies[i], bodies[j], dt); j += 1; }
6864

6965
i += 1;
@@ -74,14 +70,14 @@ mod NBodySystem {
7470
}
7571

7672
fn advance_one(bi: Body::props, bj: Body::props, dt: float) unsafe {
77-
let dx: float = bi.x - bj.x;
78-
let dy: float = bi.y - bj.y;
79-
let dz: float = bi.z - bj.z;
73+
let dx = bi.x - bj.x;
74+
let dy = bi.y - bj.y;
75+
let dz = bi.z - bj.z;
8076

81-
let dSquared: float = dx * dx + dy * dy + dz * dz;
77+
let dSquared = dx * dx + dy * dy + dz * dz;
8278

83-
let distance: float = libc::sqrt(dSquared);
84-
let mag: float = dt / (dSquared * distance);
79+
let distance = libc::sqrt(dSquared);
80+
let mag = dt / (dSquared * distance);
8581

8682
bi.vx -= dx * bj.mass * mag;
8783
bi.vy -= dy * bj.mass * mag;
@@ -99,20 +95,20 @@ mod NBodySystem {
9995
}
10096

10197
fn energy(bodies: ~[Body::props]) -> float unsafe {
102-
let mut dx: float;
103-
let mut dy: float;
104-
let mut dz: float;
105-
let mut distance: float;
106-
let mut e: float = 0.0;
98+
let mut dx;
99+
let mut dy;
100+
let mut dz;
101+
let mut distance;
102+
let mut e = 0.0;
107103

108-
let mut i: int = 0;
104+
let mut i = 0;
109105
while i < 5 {
110106
e +=
111107
0.5 * bodies[i].mass *
112-
(bodies[i].vx * bodies[i].vx + bodies[i].vy * bodies[i].vy
113-
+ bodies[i].vz * bodies[i].vz);
108+
(bodies[i].vx * bodies[i].vx + bodies[i].vy * bodies[i].vy
109+
+ bodies[i].vz * bodies[i].vz);
114110

115-
let mut j: int = i + 1;
111+
let mut j = i + 1;
116112
while j < 5 {
117113
dx = bodies[i].x - bodies[j].x;
118114
dy = bodies[i].y - bodies[j].y;
@@ -197,7 +193,7 @@ mod Body {
197193
mass: SOLAR_MASS};
198194
}
199195

200-
fn offsetMomentum(props: Body::props, px: float, py: float, pz: float) {
196+
fn offset_momentum(props: Body::props, px: float, py: float, pz: float) {
201197
props.vx = -px / SOLAR_MASS;
202198
props.vy = -py / SOLAR_MASS;
203199
props.vz = -pz / SOLAR_MASS;

0 commit comments

Comments
 (0)