Here without the /direct mode, the port acts just like a standard
REBOL series (as you would expect).

What makes the problem worse is that the /direct mode does not perform
an actual seek on the file. If you open a large file (say 100 MB) and
skip 50 MB forward, the direct port will actually perform a read of
all 50 MB of data to reach the desired position. That slows down
random access within large files. (And skip may also hang at
times.)

In my opinion, the implementation of /direct mode on files is broken.
The question is how should it be fixed. There are two choices:

Fix /direct mode to work the same way as non-direct mode.

Add a new mode called /seek.

Choice 1 seems like the perfect solution, but there may be quite a few
applications that open files in direct mode, and they will break if they
expect the file position to move forward after each copy function.

So, it looks like we will need to add a /seek mode to ports. We did this
in the new asynchronous version of REBOL, and it worked well. But the
current releases use a different implementation of ports, so we will
need to design a new solution.

We've raised this issue to a high priority bug fix, because REBOL
absolutely needs to have a better way to randomly access large files.
You can look for a new beta test release of REBOL very soon.