Benchmarking every TI-84 Plus CE OS! [5.0.0-5.6.0]
Posté: 26 Aoû 2019, 02:57
Hey, this is cross post from Cemetech, I thought you guys might find it interesting though!
As you all know, as technology gets updates with more features, that device typically starts slowing down. I was wondering, is TI doing this to our calculator's too? That's why I set up a series of tests and ran them from OS 5.0.0 to 5.4.0. Each one tests a specific function of the calculator. You can see a description of each test and the full code for each one down below.
Anyways, enjoy the chart: green is the best time and red is the worst time!
Each test was performed from the RAM, on the same calculator (revision pre-A), in the same order, and after a full mem clear. The calculator was plugged in and fully charged the entire time. Each test, with the exception of prgmRAYTRSPR was completed 5 times then the times were averaged into the table above. I only ran prgmRAYTRSPR once because it takes over 30 minutes per run and ain't nobody got time to do that 5 times over! I have yet to retest OSes under 5.3.0 for new prgmRAYTRSPR times.
Overall it seems if you want the best BASIC performance, then OS 5.0.0 or OS 5.3.1 is the way to go. However, if you just care about the speed of specific functions, then you can't go wrong with OS 5.1.x or 5.2.1.
I'd like to dig into the numbers a bit more though.
Here are the tests I performed, you can get prgmTIMER here.
ABENCH (runs every benchmark and stores the results into a list)
T01RAND (random integer test)
T02GRAPH (Horizontal line test)
T03GRAPH (vertical line test)
T04SUM (summation test)
T05LIST (creating list test)
T06LIST (sorting list of only 0s)
T07LIST (sorting list of only 7s)
RAYTRSPR ( this is a 3D modeling test using raycasting) (I didn't make this program, this was made by TheScienceElf, you can view his video here.)
So there you go, personally I think OS 5.3.0 has the best performance to match its features (Asm84CEprgm token, yay!). Let me know if you have any questions or concerns!
As you all know, as technology gets updates with more features, that device typically starts slowing down. I was wondering, is TI doing this to our calculator's too? That's why I set up a series of tests and ran them from OS 5.0.0 to 5.4.0. Each one tests a specific function of the calculator. You can see a description of each test and the full code for each one down below.
Anyways, enjoy the chart: green is the best time and red is the worst time!
Each test was performed from the RAM, on the same calculator (revision pre-A), in the same order, and after a full mem clear. The calculator was plugged in and fully charged the entire time. Each test, with the exception of prgmRAYTRSPR was completed 5 times then the times were averaged into the table above. I only ran prgmRAYTRSPR once because it takes over 30 minutes per run and ain't nobody got time to do that 5 times over! I have yet to retest OSes under 5.3.0 for new prgmRAYTRSPR times.
Overall it seems if you want the best BASIC performance, then OS 5.0.0 or OS 5.3.1 is the way to go. However, if you just care about the speed of specific functions, then you can't go wrong with OS 5.1.x or 5.2.1.
I'd like to dig into the numbers a bit more though.
- OS 5.0.0 is the champ for random numbers, graphing horizontal and vertical lines, and overall BASIC performance. Then OS 5.3.0 (relatively) crushed the times for the summation and list tests but fell behind a bit in BASIC performance.
As you can see by the graph, the only reason the newer OSes had good total scores was because the raytracing program was such a huge factor in this test. However, if you look at each function separately, it's clear they are generally getting slower on newer OSes.
TI changed something for the better between OS 5.0.0 and OS 5.1.0 that made list sorting almost 9x faster on newer OSes! Even for numbers that weren't 0s.
TI also changed something for the worse between OS 5.2.1 and OS 5.3.0 because every OS newer than 5.2.1 is typically 3 seconds slower.
Here are the tests I performed, you can get prgmTIMER here.
ABENCH (runs every benchmark and stores the results into a list)
- Code: Tout sélectionner
SetUpEditor L₆
9→dim(L₆
prgmT01RAND
Ans→L₆(1
prgmT02GRAPH
Ans→L₆(2
prgmT03GRAPH
Ans→L₆(3
prgmT04SUM
Ans→L₆(4
prgmT05LIST
Ans→L₆(5
prgmT06LIST
Ans→L₆(6
prgmT07LIST
Ans→L₆(7
L₆
T01RAND (random integer test)
- Code: Tout sélectionner
0→B
For(A,1,5
Asm(prgmTIMER
rand(100
Asm(prgmTIMER
Ans+B→B
End
B/5
T02GRAPH (Horizontal line test)
- Code: Tout sélectionner
0→W
For(A,1,5
Asm(prgmTIMER
ClrDraw
For(B,Ymax,Ymin,Y
Horizontal B
End
Asm(prgmTIMER
Ans+W→W
End
W/5
T03GRAPH (vertical line test)
- Code: Tout sélectionner
0→W
For(A,1,5
Asm(prgmTIMER
ClrDraw
For(B,Xmax,Xmin,X
Vertical B
End
Asm(prgmTIMER
Ans+W→W
End
W/5
T04SUM (summation test)
- Code: Tout sélectionner
0→W
For(A,1,5
Asm(prgmTIMER
Σ(X²,X,0,1000
Asm(prgmTIMER
Ans+W→W
End
W/5
T05LIST (creating list test)
- Code: Tout sélectionner
0→W
For(A,1,5
DelVar L₁
Asm(prgmTIMER
999→dim(L₁
Asm(prgmTIMER
Ans+W→W
End
W/5
T06LIST (sorting list of only 0s)
- Code: Tout sélectionner
0→W
For(A,1,5
DelVar L₁
100→dim(L₁
Asm(prgmTIMER
SortA(L₁
Asm(prgmTIMER
Ans+W→W
End
W/5
T07LIST (sorting list of only 7s)
- Code: Tout sélectionner
0→W
For(A,1,5
DelVar L₁
100→dim(L₁
Fill(7,L₁
Asm(prgmTIMER
SortA(L₁
Asm(prgmTIMER
Ans+W→W
End
W/5
RAYTRSPR ( this is a 3D modeling test using raycasting) (I didn't make this program, this was made by TheScienceElf, you can view his video here.)
- Code: Tout sélectionner
Asm(prgmTIMER
ClrDraw:1→G
{12,24,23,22,21,20}→L₁
For(Y,0,162,2G)
(81-Y)/164→B
For(X,0,262,2G)
(X-131)/164→A
A²+B²+1→E:2B-12→F
34.75→H:F²-4EH→D
1/B→T
AT→U:T→V
remainder(abs(int(U)+int(V)),2)→C
12→L:12→M
12-(T>0)(C+1)→C
If D≥0:Then
(F-√(D))/(2E)→T
AT→I:BT-1→J:6-T→K
J/1.5→M
If M>0:Then
int(10M)→M
L₁(1+int(M/2))→L
L₁(1+int(M/2+.5))→M
Else:12→M
End
{I,J,K}/1.5→L₃
{A,B,1}→L₂
2sum(L₃L₂)→S
SL₃-L₂→L₄
L₄(1)→P:L₄(2)→Q:L₄(3)→R
(J+2)/Q→T
If T>0:Then
PT+I→U:RT+6-K→V
11-remainder(abs(int(U)+int(V)),2)→C
Else:12→C:End
Else:If T>0:Then
1→E:4→F
U²+V²-12V+37.75→H
F²-4EH→D
12(D≥0)+C(D<0)→L
L→M
End:End
Pxl-On(Y,X,C)
Pxl-On(Y+1,X,L)
Pxl-On(Y,X+1,M)
Pxl-On(Y+1,X+1,C)
End:End
Asm(prgmTIMER
Ans
So there you go, personally I think OS 5.3.0 has the best performance to match its features (Asm84CEprgm token, yay!). Let me know if you have any questions or concerns!