Online image duration timings are poor

URL of experiment:
https://run.pavlovia.org/jacanterbury/timingtestv2

Description of the problem:
for some subliminal image presenation I want to present images for a precise duration (absolute onset timing is not so important but duration is)

I’ve played around with various timings and local PsycoPy scripts running in python appear to be reliably excellent (based on the output in the log file if I’m interpreting it correctly [I couldn’t find anything in the Docs to describe what the numbers mean]) however the equivalent experiment run online yields disappointing timing values in the log file. (i’ve tried two W10 PCs with two different browsers on both, both with 60Hz monitors)

Is it possible to tell Pavlovia to prioritise duration over relative onset to other events?

Or does anyone else have any other suggestions for improving the precision online (NB it seems to always be one frame short so I may just set the duraiton longer online to compensate for this)

Here’s some sample data from my test experiment (it shows an image for 1sec and then the same image for 100ms at one second intervals)

Here’s some sample data from the log file (I inserted column 2 to derive the time interval between rows)

Python timings extract:
image

Pavlovia timings extract:
image

Many thanks
John

Looking at those timings I’m wondering whether it’s actually related to a different implementation of AutoDraw. The shorter timings are one frame short and the longer timings are one frame too long.

One possibility might be to use .draw() instead of setting autoDraw. Alternatively, think about the relative positions of the autodraw command and the timer.

Timings are bound to be worse online but consistent behaviour should be tweakable. Are you setting the autodraws based on a frame count?

@wakecarter thanks for the suggestions, much appreciated. I will investigate and report back (everything is default at the minute)

from a quick comparison of the python vs the JS code, it looks like the frameTolerance on local python sessions is 1ms whereas the decision on when to stop displaying an image on JS sessions seems to be triggered 12.5ms before the flip. As autoDraw seems to log immediately this will give the impression that its turning the imagestim off much earlier on JS sessions than when it actually disappears compared to local python ones.
It’s the first time I’ve looked at the source code so I may well have this wrong however I’d tentatively say that comparing log files for local vs online sessions is not that meaningful. Also the timings for online sessions look to have a lot more wow and flutter in them.