Making "read from file" less blocky.

Dar Scott Consulting dsc at swcp.com
Sun Aug 4 21:15:02 EDT 2019


OK. Skip "cat" for now.  Everything else should work on Windows.


To load a file in one swoop...
put URL("binfile:" & ThisFile) into IntoThisVariable

And if you saved the file with compress, then decompress it.


To load portions of a file just-in-time...
Use "at" and "for" in "read from"

That wont help if you immediately want to find the average or something. But it might help if you want to read a header and first record, then move to another record as needed.


I am awful at explaining things so twist my arm until I do it right.


> On Aug 4, 2019, at 5:28 PM, Tom Glod via use-livecode <use-livecode at lists.runrev.com> wrote:
> 
> heheh.... its always a fun exercise.
> 
> Dar, these are linux based solutions right? using windows here at the
> moment, so I can't test, but when I test and optimize my application for
> linux i will try these.
> 
> On Sun, Aug 4, 2019 at 4:43 PM dsc--- via use-livecode <
> use-livecode at lists.runrev.com> wrote:
> 
>> Even more "really out there" of the "really out there".
>> 
>> Don't read in the file.
>> 
>> Access portions JIT, that is, lazily.
>> 
>> Create a function that pulls in segments of the file. Kinda like this:
>> 
>>        function segmentOfFile pStartIndex, pEndIndex, pThisFile
>> 
>> Or this:
>> 
>>        function segmentOfCurrentFile pStartIndex, pEndIndex
>> 
>> Dar
>> 
>>> On Aug 4, 2019, at 1:22 PM, dsc--- via use-livecode <
>> use-livecode at lists.runrev.com> wrote:
>>> 
>>> More "really out there".
>>> 
>>> I like the idea of trying to speed up an upfront foreground load.
>> Something simple like this:
>>> 
>>> put blah-plah into IntoThisVariable.
>>> 
>>> where blah-blah is nana-nana or decompress( nana-nana )
>>> where nana-nana is one of these:
>>>      URL ("binfile:" & ThisFile)
>>>      shell("cat " & ThisFile)
>>> 
>>> Function decompress() makes two RAM hits and requires control over the
>> loaded files.
>>> 
>>> 
>>>> On Aug 4, 2019, at 12:47 PM, Dar Scott Consulting via use-livecode <
>> use-livecode at lists.runrev.com> wrote:
>>>> 
>>>> I love "really out there".  I wanna play.
>>>> 
>>>> At the start of any solution, try this. It might speed up any method
>> but would take some time at the start.
>>>> 
>>>> get shell( "cat " & ThisFile & " > dev/null" )
>>>> 
>>>> I think that is likely to pre-load the system file buffers for you.
>>>> 
>>>> If one is feeling adventurous, one can try open process (cat) to avoid
>> the wait; it will probably move through the file faster than the script and
>> sectors will already be loaded when you ask for them.
>>>> 
>>>> Dar
>>>> 
>>>>> On Aug 4, 2019, at 7:59 AM, Alex Tweedly via use-livecode <
>> use-livecode at lists.runrev.com> wrote:
>>>>> 
>>>>> OK, here's a "really out there" suggestion ....
>>>>> 
>>>>> 1. Run a local web server  to serve files (locally only).
>>>>> 
>>>>>   Can be done various ways, including (easily) via LC and the httpd
>> library,
>>>>> 
>>>>>      (build that server as a standalone and have it running - started
>> from your app if need be...)
>>>>> 
>>>>> 2. in your stack, just do
>>>>> 
>>>>> load url ("http://localhost:8080/myfilename") with message
>> "mycallback"
>>>>> 
>>>>> and handle the file once it has been read in the "mycallback" handler
>>>>> 
>>>>> -- Alex.
>>>>> 
>>>>> 
>>>>> On 04/08/2019 01:56, Tom Glod via use-livecode wrote:
>>>>>> Hey folks,
>>>>>> 
>>>>>> I'm having trouble finding a combination of settings that allows my
>> file
>>>>>> loading  to seem to happen in the background.
>>>>>> 
>>>>>> repeat while read_result is not "eof"
>>>>>>       read from file ThisFile for (1024 * 1000) bytes
>>>>>>       put the result into read_result
>>>>>>       put it after IntoThisVariable
>>>>>>       add length(it) to amount_read
>>>>>>       TSTProgress amount_read,ExpectedSize,"%","Loading File ..."
>>>>>> (Progress Indicator Handler)
>>>>>>       wait 10 milliseconds with messages
>>>>>>    end repeat
>>>>>> 
>>>>>> no matter what I try, its still sluggish, and it seems like messages
>> are
>>>>>> still accumilating instead of being processed by the engine.
>>>>>> 
>>>>>> Am I missing something?  Normally waiting with messages sufficiently
>> frees
>>>>>> the engine to allow the UI to remain responsive.
>>>>>> 
>>>>>> Thanks,
>>>>>> 
>>>>>> Tom
>>>>>> _______________________________________________
>>>>>> use-livecode mailing list
>>>>>> use-livecode at lists.runrev.com
>>>>>> Please visit this url to subscribe, unsubscribe and manage your
>> subscription preferences:
>>>>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>>>> 
>>>>> _______________________________________________
>>>>> use-livecode mailing list
>>>>> use-livecode at lists.runrev.com
>>>>> Please visit this url to subscribe, unsubscribe and manage your
>> subscription preferences:
>>>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>>>> 
>>>> 
>>>> 
>>>> _______________________________________________
>>>> use-livecode mailing list
>>>> use-livecode at lists.runrev.com
>>>> Please visit this url to subscribe, unsubscribe and manage your
>> subscription preferences:
>>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>>> 
>>> 
>>> 
>>> _______________________________________________
>>> use-livecode mailing list
>>> use-livecode at lists.runrev.com
>>> Please visit this url to subscribe, unsubscribe and manage your
>> subscription preferences:
>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>> 
>> 
>> _______________________________________________
>> use-livecode mailing list
>> use-livecode at lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your
>> subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
>> 
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode





More information about the use-livecode mailing list