Page 1 of 18 1 2 3 11 ... LastLast
Results 1 to 10 of 178

Thread: Native Windows (x86) KoLmafia.exe

  1. #1
    Senior Member
    Join Date
    Jul 2007
    Posts
    1,193

    Default Native Windows (x86) KoLmafia.exe

    This thread is about the JET build of KoLmafia. It's a native KoLmafia exe. What that means is that the executable runs independently of Java and does not require a JVM. If you have any questions, check the FAQ below first, or feel free to ask in this thread.

    Why did you do this?
    Mostly out of curiosity, I also noticed that Java was using 600mb of RAM today and I knew that a native exe would use less, not that I have any shortage of RAM or anything...

    Why is this useful?
    Hmm... Well, if you're running on a Windows system where RAM usage may be a factor, this might be pretty useful to you. Also if you're running on (Windows) systems that for whatever reason will not allow you to install the JRE (due to perhaps domain policies, ie. school or workplace) then this should work too. It might also be handy as a portable app solution for thumbdrives, as again this doesn't rely on the target machine running Java.

    How did you do this?
    I used Excelsior JET 9.0 (pro version), it was actually pretty easy.

    What's with the large file size?
    I optimized the build package for launch speed as opposed to disk footprint. I've tweaked the build process a little since the initial release though, which has reduced the disk footprint from what it once was.

    How do I get it working?
    You'll need to extract the 7-zip files into a directory of your choice. The rt.7z file contains the Excelsior JET runtimes and needs to be extracted to the same directory (leave them in the /rt/ folder though). With new releases, you should just need to download KoLmafia.7z and replace the old exe.

    Are there any benefits in this?
    Well, my launch time is practically instantaneous (probably due to no longer having to invoke a JVM at launch), my RAM usage has not gone higher than 64mb as of writing and the GUI seems subjectively more responsive. I haven't tried any other comparisons as yet (ie. arithmetic performance). Feel free to try it out and let me know what you think

    Are you planning to support this?
    Yes! Thanks to Holatuwol, I'm able to provide builds on the SourceForge page roughly once a day. Let me know if you have issues with the JET build specifically (ie. not a KoLmafia bug).

    Are you planning on compiling an x64 version?
    Short answer: No, but maybe some day. You shouldn't need it.
    Long answer here.

    This is a stupid idea!
    Hey, it's not for everyone, there's no need to hate!


    KoLmafia

    Excelsior JET 9.0 Runtimes

    This script should let you know when a new build has been uploaded to sourceforge, feel free to add it to your login script.
    Attached Files
    Last edited by Catch-22; 01-22-2014 at 03:41 PM. Reason: We're on JET 9.0 now!
    Procrastination
    Leaves many things unfinished

    Originally Posted by /haiku

  2. #2

    Default

    Are you planning on compiling an x64 version?

  3. #3
    Senior Member
    Join Date
    Jul 2007
    Posts
    1,193

    Default

    Are you planning on compiling an x64 version?
    Originally Posted by Chish View Post
    Currently there's no compiler capable of doing this (on Windows). GCJ for MingW32-w64 is currently broken, so that's off the cards. Excelsior have an alpha version capable of it though, but it's not ready for general use ("very poor performance"). I can't imagine why KoLmafia would ever need to address Java heaps above 4GB, but yes an x64 edition would be nice I suppose.

    Any version of Windows that runs WoW64 (ie. all 64-bit versions of Windows) will be able to run the x86 executable though (I have actually only used this on 64-bit versions of Windows).
    Last edited by Catch-22; 06-17-2012 at 11:57 PM.
    Procrastination
    Leaves many things unfinished

    Originally Posted by /haiku

  4. #4
    Senior Member
    Join Date
    Apr 2009
    Posts
    1,650

    Default

    64-bit code means native 64-bit integers, which means (slightly) improved performance now that mafia moved to (64-bit) longs.
    At least that's my understanding of one thing that would happen.

  5. #5
    Senior Member
    Join Date
    Jul 2007
    Posts
    1,193

    Default

    64-bit code means native 64-bit integers, which means (slightly) improved performance now that mafia moved to (64-bit) longs.
    Originally Posted by xKiv View Post
    Eh, well you're right in the sense that there are certain registers available only in x86_64 which may reduce the amount of caching done by the CPU, but memory addressing becomes a more complicated matter. I'm no CPU architecture expert, so I'll leave it up to Sun to explain that the performance is likely going to be the same or worse on 64-bit.
    Last edited by Catch-22; 06-18-2012 at 03:06 PM.
    Procrastination
    Leaves many things unfinished

    Originally Posted by /haiku

  6. #6
    Senior Member
    Join Date
    Apr 2009
    Posts
    1,650

    Default

    Eh, well you're right in the sense that there are certain registers available only in x86_64 which may reduce the amount of caching done by the CPU, but memory addressing becomes a more complicated matter. I'm no CPU architecture expert, so I'll leave it up to Sun to explain that the performance is likely going to be the same or worse on 64-bit.
    Originally Posted by Catch-22 View Post
    I was talking purely about the 64-bit arithmetics (which are probably faster when operating on 64-bit registers than when operating on twice the number of 32-bit registers), but OK.

  7. #7
    Developer
    Join Date
    Mar 2006
    Posts
    1,367

    Default

    I was talking purely about the 64-bit arithmetics (which are probably faster when operating on 64-bit registers than when operating on twice the number of 32-bit registers), but OK.
    Originally Posted by xKiv View Post
    Any benefit from 64-bit arithmetic would be negligible, since KoLmafia is mostly heavy in string sorting and string comparisons (which operate on 8-bit or 16-bit characters) and network I/O.

  8. #8
    Senior Member
    Join Date
    Jul 2007
    Posts
    1,193

    Default

    Due to the new server cookies I have updated the package to r11180.

    I separated the runtimes and the exe so hopefully future updates won't be such a hefty download. You'll probably need to download the runtimes package again though, if you are one of the 5 people who downloaded the old release.

    This new release was built using Excelsior JET 7.6 Standard Edition (big thanks to Dmitry from Excelsior for providing me with a license). The downside of this is there are less optimizations done at build-time, but the upside is I can support builds for longer than the evaluation period of the pro edition.

    Any feedback is welcome guys, even if you just tried it out and didn't like it.
    Procrastination
    Leaves many things unfinished

    Originally Posted by /haiku

  9. #9
    Senior Member Theraze's Avatar
    Join Date
    Mar 2010
    Posts
    8,633

    Default

    Suggestion for the future... make the downloads NOT inline? It helps people know what they've already downloaded, because if the support files have 3000 downloads and the mafia file has 2, they probably need to download the mafia file again.

  10. #10
    Senior Member
    Join Date
    Jul 2007
    Posts
    1,193

    Default

    Suggestion for the future... make the downloads NOT inline? It helps people know what they've already downloaded, because if the support files have 3000 downloads and the mafia file has 2, they probably need to download the mafia file again.
    Originally Posted by Theraze View Post
    Thanks for the suggestion Theraze. The files are too large to post as an attachment on the forums, so they are actually hosted externally. I was thinking about putting a "Last updated" section in the post so people will know if the runtimes have changed, so I will probably do that
    Procrastination
    Leaves many things unfinished

    Originally Posted by /haiku

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •