Pavel Ivanov wrote:
>> MacBook Mac OS X 10.5.8
>> 2 GHz Intel Core Duo
>> 1 GB memory:
>> 17 minutes 46 seconds.
>>
>> IBM ThinkPad
>> Windows XP (latest patches)
>> 1.70 GHz, 512 MB memory:
>> 6 hours 25 minutes 57 seconds
> 
> Windows is very slow in starting new processes if compared to any Unix
> system (especially if compared Windows + 512 MB and Unix + 1 GB). In
> cygwin starting new processes even slower because for some reason
> emulating fork() involves starting 2 processes one of which dies
> immediately. And bash scripts use processes a lot especially with Unix
> paradigm when for each small action you start new program (like sed,
> awk, test, true and whole lot of others). Thus bash scripts on cygwin
> will be slow unavoidably.
> But I'm digressing. This is subject for some other mailing list. :)

I'm blacklisted apparently on the cygwin mailing list for when a
couple of years ago I complained rather unflatteringly about how slow
it was/is when I was writing a simple expenses program (that works in
seconds on my Mac). I forgot about that. A badge of honor in my opinion.

But after all these years I wonder why they don't fix the fork problem?
MacOS runs on Intel processors. Windows runs on Intel processors. Surely
they could learn how it *should* be done by studying things like the
Open Source Java code?

It looks like I won't be able to distribute my stopgap cygwin code on
Windows. I need to start speed reading my Java/Swing books I guess in
my quest for my program to write once, run anywhere.

> Pavel
> 
> On Fri, Sep 18, 2009 at 3:26 AM, John <jhy...@earthlink.net> wrote:
>> Pavel Ivanov wrote:
>>>> At least I think that is what you suggest, and think it just
>>>> may work! But I could be wrong!
>>> Yes, that's exactly what I suggest.
>>>
>>> Pavel
>> It worked! Fortunately I had already parameterized SQLITE3 as a
>> preference variable so I could have the same scripts run easily on Mac
>> OS and Windows. There are dozens of sqlite3 calls throughout the scripts.
>>
>> My whole set of scripts that process raw data and load the database by
>> reading text files seem to work.
>>
>> cygwin is as slow as I recall, however. I was writing expense scripts a
>> few years ago and abandoned it for MacOS Unix. I moved 100% to Mac OS.
>> (except for this project which I want to work on Mac, linux, and
>> Windows; my next goal is recoding it in Java with its Swing GUI, but I'm
>> just learning Java and Swing, but I'm on my way...).
>>
>> Observed elapsed times on my two notebook computers for the same scripts
>> to load the database (using sqlite3 calls and lots of sed and awk
>> processing of thousands of lines of input data):
>>
>> MacBook Mac OS X 10.5.8
>> 2 GHz Intel Core Duo
>> 1 GB memory:
>> 17 minutes 46 seconds.
>>
>> IBM ThinkPad
>> Windows XP (latest patches)
>> 1.70 GHz, 512 MB memory:
>> 6 hours 25 minutes 57 seconds
>>
>> Fortunately, sqlite .dump and restoring from the resultant sql will be
>> able to be used for most of the heavy lifting when I'm done. Changes to
>> the data will come in small increments over time from then on. My dumpit
>> and restoreit scripts each take only seconds on both platforms for the
>> full set of current data.
>>
>> Thanks!
>>
>>> On Thu, Sep 17, 2009 at 1:18 PM, John <jhy...@earthlink.net> wrote:
>>>> Pavel Ivanov wrote:
>>>>>> I'd rather avoid building sqlite3 under cygwin. I would like
>>>>>> to keep as much as possible in native code, compromising only
>>>>>> on cygwin to run my scripts.
>>>>> And this is root of your problem. Using mix of cygwin-native
>>>>> applications with windows-native applications will always have such
>>>>> problem.
>>>>>
>>>>>> When installing cygwin, you it offers you the choice to switch
>>>>>> to default text file type to DOS (\r\n). Should I try that?
>>>>> Don't do that. This mode of operation is not supported much and not
>>>>> recommended by cygwin developers and it reportedly will significantly
>>>>> slow down cygwin's operation.
>>>>>
>>>>>> So I guess my question here is, do any sqlite users here
>>>>>> have experience fixing this on Windows for Unix cygwin
>>>>>> script calls?
>>>>> The major suggestion here: write some "windows native code launcher"
>>>>> that will be used for running all non-cygwin applications (this can be
>>>>> just function in the script). It will do nothing on unix platforms
>>>>> (select your own preferred way of distinguishing it) and it will
>>>>> always strip off '\r' from output of running application on windows
>>>>> (you can use sed for that). And there's nothing else you can do about
>>>>> it.
>>>> This sounds like a great idea. I can have all sqlite3.exe calls
>>>> "intercepted" by another script call like:
>>>>
>>>> NumPar=`WINDOWSCALL Program Arguments`
>>>>
>>>> WINDOWSCALL is the launcher that calls Program sqlite3.exe
>>>> with its arguments and strips off any trailing \r's
>>>> and returns that string to the caller through stdout,
>>>> as to NumPar here. WINDOWSCALL can do nothing on Unix/MacOS,
>>>> and fix the string on Windows.
>>>>
>>>> At least I think that is what you suggest, and think it just
>>>> may work! But I could be wrong!
>>>>
>>>> Thanks! I'll try coding it.
>>>>
>>>>> Pavel
>>>>>
>>>>> On Thu, Sep 17, 2009 at 12:26 PM, John <jhy...@earthlink.net> wrote:
>>>>>> I am writing some Unix scripts on Mac OS X that use
>>>>>> sqlite3. Since the program could be useful to those
>>>>>> on Windows, I figured I'd see if they worked under
>>>>>> cygwin.
>>>>>>
>>>>>> A lot of it works, but calling sqlite3.exe from
>>>>>> cygwin and returning a string with the value
>>>>>> returned from the database seems to attach a
>>>>>> "\r" that expr doesn't remove.
>>>>>>
>>>>>> That is:
>>>>>>
>>>>>> NumPar=`sqlite3.exe ${DATABASE} "SELECT NumPar FROM citations WHERE
>>>>>> X='Key' ;"`
>>>>>>
>>>>>> NumPar comes back as: "12\r"
>>>>>>
>>>>>> and
>>>>>>
>>>>>> NumPar=`expr ${NumPar}`
>>>>>>
>>>>>> doesn't convert it to integer, as the subsequent test fails because
>>>>>> of NumPar being non-integer (it isn't complaining about N, that
>>>>>> is integer in the code):
>>>>>>
>>>>>> if [ ${N} -le ${NumPar} ]
>>>>>> ...
>>>>>>
>>>>>> I can fix this case by:
>>>>>>
>>>>>> NumPar=`printf '%s' "${NumPar}" | sed 's/[^0-9]//g'`
>>>>>>
>>>>>> but then other scripts fail later, presumably because of
>>>>>> strings with \r on them. (I suppose I can use sed to
>>>>>> always remove \r's on every one of these calls, but
>>>>>> that seems pretty kludgy, especially since "clean"
>>>>>> Mac OS X handles all this "properly" without that.
>>>>>> I'm hoping to find an elegant solution.
>>>>>>
>>>>>> I'd rather avoid building sqlite3 under cygwin. I would like
>>>>>> to keep as much as possible in native code, compromising only
>>>>>> on cygwin to run my scripts.
>>>>>>
>>>>>> When installing cygwin, you it offers you the choice to switch
>>>>>> to default text file type to DOS (\r\n). Should I try that?
>>>>>> My pretty serious objection to that would be that any users
>>>>>> already using cygwin with the "correct" default settings would
>>>>>> not be able to use the scripts anyway.
>>>>>>
>>>>>> So I guess my question here is, do any sqlite users here
>>>>>> have experience fixing this on Windows for Unix cygwin
>>>>>> script calls?
>>>>>>
>>>>>> Thanks!
>>>>>> _______________________________________________
>>>>>> sqlite-users mailing list
>>>>>> sqlite-users@sqlite.org
>>>>>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>>>>>>
>>>>> _______________________________________________
>>>>> sqlite-users mailing list
>>>>> sqlite-users@sqlite.org
>>>>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>>>>>
>>>> _______________________________________________
>>>> sqlite-users mailing list
>>>> sqlite-users@sqlite.org
>>>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>>>>
>>> _______________________________________________
>>> sqlite-users mailing list
>>> sqlite-users@sqlite.org
>>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>>>
>> _______________________________________________
>> sqlite-users mailing list
>> sqlite-users@sqlite.org
>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>>
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
> 
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to