Millisecond Forums

Long loading times LDT via web

https://forums.millisecond.com/Topic14306.aspx

By friescamp - 9/21/2014

Hi all,

I created a primed lexical decision task, where an image is primed right before the decision word. In the lab, this file runs smoothly, but using the online version, it seems to depend on the computer the participant is using. Yes, the file opens, but whereas it runs smoothly on my own PC's (Windows Vista & 8, Internet explorere & Chrome), the loading times on some other computers is very long. The task should be around 5 minutes in length, but I had some respondents breaking it halfway the task off, and the running time was by then already 12 minutes! This difference cannot be due to slow reaction times, since they are cutoff after 3 seconds. I got feedback that the intertrial interval is quite long and is becoming longer as the task continues.

Does anyone know what can cause this problem, and what could solve it?

Btw: here the link to the file: http://research.millisecond.com/friescamp/ApSientje14.web

By Dave - 9/21/2014

> I had some respondents breaking it halfway the task off, and the running time was by then already 12 minutes!

I don't think this necessarily means much. (1) The task has a number of self-paced sections -- e.g. the instructions, the break midway-through. Participants can spend as much time there as they want (they might get distracted by something while reading the instructions and return later, etc.).

I also don't see where exactly trials are limited to 3 seconds. Your practice trials have a timeout set at

/ timeout = 2867

your experimental trials have it set at

/ timeout = 3567

Plus you've got error etc. trials which will further add to the duration based on participant performance.

> loading times on some other computers is very long.

Loading times -- i.e., the time it takes for Inquisit Web to download all the files to the client machine, which happens *before ever starting to execute the script* -- have nothing to do with performance at runtime. Inquisit does not fetch any files from the server while the script is already running. Thus I'm not quit sure what exactly you mean when referring to long loading times. Please clarify.

> I got feedback that the intertrial interval is quite long and is becoming longer as the task continues.


Your script does some things which may lead to suboptimal performance. In particular, with statements such as


/ ontrialbegin = [if(counter.brand_word.selectedvalue == 1) text.stimulus_word.item = counter.brandA_word_counter.selectedvalue]
/ ontrialbegin = [if(counter.brand_word.selectedvalue == 1) picture.stimulus_picture.item = item.brand_pictures.1]

/ ontrialbegin = [if(counter.brand_word.selectedvalue == 2) text.stimulus_word.item = counter.brandB_word_counter.selectedvalue]
/ ontrialbegin = [if(counter.brand_word.selectedvalue == 2) picture.stimulus_picture.item = item.brand_pictures.2]

/ ontrialbegin = [if(counter.brand_word.selectedvalue == 3) text.stimulus_word.item = counter.brandC_word_counter.selectedvalue]
/ ontrialbegin = [if(counter.brand_word.selectedvalue == 3) picture.stimulus_picture.item = item.brand_pictures.3]

/ ontrialbegin = [if(counter.brand_word.selectedvalue == 4) text.stimulus_word.item = counter.brandD_word_counter.selectedvalue]
/ ontrialbegin = [if(counter.brand_word.selectedvalue == 4) picture.stimulus_picture.item = item.brand_pictures.4]

/ ontrialbegin = [if(counter.brand_word.selectedvalue == 5) text.stimulus_word.item = counter.brandE_word_counter.selectedvalue]
/ ontrialbegin = [if(counter.brand_word.selectedvalue == 5) picture.stimulus_picture.item = item.brand_pictures.5]

/ ontrialbegin = [if(counter.brand_word.selectedvalue == 6) text.stimulus_word.item = counter.brandF_word_counter.selectedvalue]
/ ontrialbegin = [if(counter.brand_word.selectedvalue == 6) picture.stimulus_picture.item = item.brand_pictures.6]

you keep *adding* ever more items to <picture stimulus_picture> as the task goes on. See e.g. http://www.millisecond.com/forums/FindPost13591.aspx
By friescamp - 9/22/2014

Thanks for the response. The reason the task takes so long I found out now, is that the intertrial time is normal at the start of the task, but increases up to 20 seconds between each trial.

Probably then, this is due to what you noted:

"Your script does some things which may lead to suboptimal performance. In particular, with statements such as
/ ontrialbegin = [if(counter.brand_word.selectedvalue == 1) text.stimulus_word.item = counter.brandA_word_counter.selectedvalue]
/ ontrialbegin = [if(counter.brand_word.selectedvalue == 1) picture.stimulus_picture.item = item.brand_pictures.1] " etc.

The problem is I have a list of 6 pictures, and a list of 10 unique words & 20 unique nonwords. I want to make sure that each image is paired to each unique word (&10 of the 20 unique nonwords). Without this counter, I had the problem that 1 image was e.g., paired with 3 times the same word (e.g,. "natural"), and other words were not shown at all. 
Would you know a solution for this that does not hinder performance? 




By Dave - 9/22/2014

It may be sufficient to improve performance by *stopping to add items* to <picture stimulus_picture> (as already discussed) and instead *replace* its 1st item. I.e. do

<picture stimulus_picture>
/ items = ("put_one_of_your_images_here_which_one_does_not_matter.jpg")
...
</picture>

and then


/ ontrialbegin = [if(counter.brand_word.selectedvalue == 1) text.stimulus_word.item = counter.brandA_word_counter.selectedvalue]
/ ontrialbegin = [if(counter.brand_word.selectedvalue == 1) picture.stimulus_picture.item.1 = item.brand_pictures.1] " etc.

I.e., you simply replace the 1st item with the applicable one.

BTW, for consistency reasons I would do the same for <text stimulus_word>.

Another performance trick you can try: Set up a bunch of <picture> elements that actually reference your various <item> elements. E.g.

<picture brand_pictures>
/ items = brand_pictures
...
</picture>
etc.

Those elements don't have to be actually used anywhere in the script, but including them will guarantee that Inquisit knows about all the files there are, downloads them all and preloads them into memory.

If all that isn't enough to boost performance, see e.g. for some other tricks: http://www.millisecond.com/forums/FindPost11504.aspx