PreRelease serves to eliminate the delay caused by the time it takes to set up the next object in an experiment. Using PreRelease allows the currently displayed stimulus to lend time to the following stimulus so that following stimulus can perform setup activities (e.g., reading data from a disk, getting the image ready in memory). Thus, when the second stimulus is scheduled to display, it is simply copied to the screen and any delay caused by setup activities is eliminated.
Keep in mind that you should only give an object a PreRelease > 0 if you need to preload the following object on the procedure. For this reason, there's no need to set a PreRelease on the last object on a trial, or on an object that precedes an InLine, as InLine script cannot be preloaded. Again, PreRelease on an object can only lend time to the object that follows it. PreRelease does not affect loading time of the object on which it is enabled.
Additionally, since PreRelease works by lending any "extra" time from an object's duration to the object that directly follows it, PreRelease on an object cannot be greater than or equal to the duration of the object itself. PreRelease can only occur when the current object has been fully loaded and is waiting for its targeted offset time to occur. The amount of time possible will depend on the object itself. But setting a PreRelease on an object with duration = 0, or setting a larger PreRelease on an object than that object's duration, can cause timing (and other) problems in an experiment.
Please refer to Chapter 3: Critical Timing of the E-Prime User's Guide for more information on how PreRelease works with timing and input collection.