Some further performance tests, this time using Identify on the following duelling donuts oscillator through viewer.html three times:

Code: Select all

```
x = 35, y = 35, rule = R10,C2,S24-29,B72-133,NB
9bobo$6bobobobo$5bobobobobobo$4bobobobobobobo$3bobobobobobobobo$2bobobobobobobobobo$bobobobobobobobobo$2bobobobobobobobobo$bobobobobobobo2b4o$obobobobo3bob3obobo$bobobobo5bobobobo$obobobobo3bobobobobo$bobobobobobobobobobo$2bobobobobobobobobo4bobo$3bobobobobobobobobo2bobobo$2bobobo2b2obobobob2obobob3o$3bobob3obobobob2obobobobobo$4bobobobobobob2obobobo3bobo$5bob3obobob2obobobobobobobo$8bobobob2obobobobo3bobobo$9bobo4bobobobo2b2obobobo$15bobobobo3bobobobobo$14bobobobo7bobobobo$13bobobobo7bobobobo$14bobobo9bobobobo$13bobo4b2o5bobobobo$14b3obobo5bobobobobo$15bobobobobobobobobobo$16bobobobobobobobobo$17bobobobobobobobo$18bobobobobobobo$19bobobobobobo$20bobobobobo$21bobobobo$22bobobo!
```

2013 desktop PC running Windows 10 Home 19045.3803:

Brave: 16.8s/22.9s, 16.8s/23.0s, 22.4s/28.2s

Chrome: 18.1s/24.4s, 24.1s/29.9s, 15.2s/21.0s

Edge: 15.8s/21.6s, 15.0s/20.7s, 14.7s/20.5s

Internet Explorer: not sure how to open this without Edge taking over

Same PC running Ubuntu 23.10 via a flash drive:

Firefox: 15.5s/21.4s, 15.6s/21.6s, 15.7s/21.6s

HP 250 G7 Notebook PC running Windows 10 Home 19045.3570:

Firefox: 44.4s/53.4s, 48.3s/59.1s, 63.7s/73.1s

Chrome: 39.9s/50.3s, 33.3s/40.2s, 34.5s/42.3s

Edge: 33.6s/39.6s, 32.3s/39.6s, 30.5s/35.9s

Internet Explorer: again, can't seem to open this anymore

HP 250 G7 Notebook PC running Ubuntu 23.10 from the same flash drive as earlier:

Firefox: 15.4s/21.0s, 14.2s/19.4s, 14.1s/19.3s

iPad:

Safari: 10.5s/14.1s, 10.5s/14.2s, 10.4s/14.0s

Samsung Galaxy A20e:

Samsung Internet: 64.7s/82.0s, 63.6s/80.7s, 64.1s/81.4s

Is there any way to do Identify in a way that doesn't update the renderer so we can more accurately isolate it for performance testing?

I've been thinking about potential optimizations for Identify, but can't be sure how many of the ones I've come up with are already implemented, or are feasible to implement. For example, does the period mapping interact with mod calculations at all? If we know that an oscillator flips or rotates at halfway through or a quarter of the way through its evolution, we may be able to conclude several useful details which could be used to speed up calculation of the period map. For example, an oscillator that flips halfway through its evolution diagonally will always have a gutter of cells which are at most period p/2 for a period-p oscillator. The same is true for oscillators that flip orthogonally across a line that passes through the centers of cells (i.el it has an odd bounding box width on that axis). For stuff that rotates 180 degrees around the center of a cell, said cell can be at most period-(p/2), and for stuff that rotates 90 degrees around the center of a cell, it can be at most period-(p/4). Examples can be provided for clarification's sake.