Java-Gaming.org    
Featured games (81)
games approved by the League of Dukes
Games in Showcase (487)
Games in Android Showcase (110)
games submitted by our members
Games in WIP (552)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  Give to charity, get a copy of Excelsior JET (commercial JVM with AOT compiler)  (Read 2117 times)
0 Members and 1 Guest are viewing this topic.
Offline dleskov

Senior Member


Medals: 10



« Posted 2014-04-25 04:58:37 »

Update 01-Jun-2014: The campaign's over, raised $6,473 this time. Thanks everyone!

We are doing it again:

http://www.excelsiorjet.com/charity

What would be the good places beside JGO and Javalobby to post this announcement?

To moderators: Any chance to get a sticky topic here and/or in the "Engines, Libraries and Tools" forum until May 31? Thanks.

Offline princec

JGO Kernel


Medals: 363
Projects: 3
Exp: 16 years


Eh? Who? What? ... Me?


« Reply #1 - Posted 2014-04-25 07:55:18 »

Tweetin'...

Cas Smiley

Offline erikd

JGO Ninja


Medals: 16
Projects: 4
Exp: 14 years


Maximumisness


« Reply #2 - Posted 2014-04-26 18:05:36 »

Very cool.
I just ordered my Win+Linux copy  Smiley

Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline erikd

JGO Ninja


Medals: 16
Projects: 4
Exp: 14 years


Maximumisness


« Reply #3 - Posted 2014-04-26 20:26:20 »

I just made my first build with this, and I must say I'm impressed with how easy it all is. A native build of a project with some libs and dlls is literally just a few clicks away.
Very impressive stuff.

Performance is comparable to HotSpot; it's actually a bit slower and in my audio project I get some audio glitching caused by some performance spikes.
I didn't expect that tbh, but it might have something to do with this being the standard edition that's missing some features. And my audio project is very sensitive to that due to extremely low audio buffer sizes; I'm sure this is normally not an issue with other projects.
For 100$ for both Win+Linux and knowing you're helping a good cause, you can't beat this.

Offline Riven
« League of Dukes »

JGO Overlord


Medals: 781
Projects: 4
Exp: 16 years


Hand over your head.


« Reply #4 - Posted 2014-04-26 20:58:36 »

To moderators: Any chance to get a sticky topic here and/or in the "Engines, Libraries and Tools" forum until May 31? Thanks.
Just like everybody else you'll have to keep thing fresh all by yourself Smiley Sticky posts are usually completely ignored on forums, as they are a sign of stale content. It's in everybody's interest to let your thread naturally evolve. Kiss

Hi, appreciate more people! Σ ♥ = ¾
Learn how to award medals... and work your way up the social rankings
Offline dleskov

Senior Member


Medals: 10



« Reply #5 - Posted 2014-04-27 02:11:41 »

Performance is comparable to HotSpot; it's actually a bit slower and in my audio project I get some audio glitching caused by some performance spikes.
I didn't expect that tbh, but it might have something to do with this being the standard edition that's missing some features. And my audio project is very sensitive to that due to extremely low audio buffer sizes; I'm sure this is normally not an issue with other projects.

You can verify your hypothesis by compiling your audio project with an Evaluation Package, which has all features of the Enterprise Edition.

Also make sure that nothing is left to JIT. Assuming you are on Windows:

1  
2  
3  
4  
5  
rem Enable console
gui - YourAudioProject.exe

SET JETVMPROP=-Djet.jit.loud
YourAudioProject.exe


You should get something like the following printed to the console:

*** JIT: sun.reflect.misc.Trampoline
JITCompiler: compile sun.reflect.misc.Trampoline
JITCompiler: compilation finished in 9ms, classes: 1
JITCompiler: total compilation time: 9ms, classes: 1


If you notice instead that your application's classes get JIT-compiled en masse, you need to check your project settings on the Classes page.

Offline dleskov

Senior Member


Medals: 10



« Reply #6 - Posted 2014-04-27 02:13:48 »

Just like everybody else you'll have to keep thing fresh all by yourself Smiley Sticky posts are usually completely ignored on forums, as they are a sign of stale content. It's in everybody's interest to let your thread naturally evolve. Kiss
Okay, then can I cross-post to "Engines, Libraries and Tools" and see how it will evolve there? Wink

Offline BurntPizza
« Reply #7 - Posted 2014-04-27 02:17:40 »

Okay, then can I cross-post to "Engines, Libraries and Tools" and see how it will evolve there? Wink

I don't really think which board it's in has a whole lot of effect on how much exposure a topic gets, because members (people who can give feedback) simply look in their "Unread Posts," and guests look at the "Recent Posts" and "High Profile Topics" on the homepage. Just my 2 cents, if someone has evidence otherwise, let's hear it.

Plus, X-posting splits the conversation awkwardly, wouldn't want that.

EDIT: Also, on topic, this is great! AOT compilation for Java has always fascinated me, but there's never really been anything decent outside of JET.
Offline erikd

JGO Ninja


Medals: 16
Projects: 4
Exp: 14 years


Maximumisness


« Reply #8 - Posted 2014-04-27 16:42:25 »

Thanks for the tips, dleskov.
I didn't see any JIT activity in the output, so I guess it got properly AOT compiled.

After doing a bit more research, the performance glitches might actually not have anything to do with JET because with that particular test I did, these audio glitches actually do happen occasionally on HotSpot as well. I probably shouldn't have tested some new code and JET at the same time  persecutioncomplex
So although these glitches do seem to happen a bit more regularly in JET, it's most likely a problem in my own code; and a problem I've hit before in my project (float denormals causing very unpredictable and extreme performance spikes).

So never mind me, JET is awesome Smiley

I'll definitely check out the evaluation of the full product too to see if it improves performance, but I'm not really having a performance issue there. Running hundreds of DSP objects at about 350 audio-frames per second in real time still doesn't doesn't consume more than about 15% of one core on average, so ~1-2 percent difference doesn't really matter to me (because that's the difference I'm seeing with HotSpot).

Offline theagentd
« Reply #9 - Posted 2014-04-27 17:32:06 »

Float denormals? Care to elaborate?

Myomyomyo.
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline dleskov

Senior Member


Medals: 10



« Reply #10 - Posted 2014-04-28 00:46:22 »

Thanks for the tips, dleskov.
I didn't see any JIT activity in the output, so I guess it got properly AOT compiled.
sun.reflect.misc.Trampoline is always JIT-compiled, so you should see at least those four lines.

Offline erikd

JGO Ninja


Medals: 16
Projects: 4
Exp: 14 years


Maximumisness


« Reply #11 - Posted 2014-04-28 04:12:23 »

Float denormals? Care to elaborate?

Float denormalization is basically when a float gets nearer to 0 than a float can represent normally, and not 0 (see also Float.MIN_NORMAL). My understanding is that this gets treated in the CPU as sort of an exception and doing computations on that will be really slow. I never knew just *how* slow it can be so I sort of ignored the issue, until I actually got hit by it. It can make things like 25 times slower or worse.
It's a common issue in DSP code where often signals are calculated to 'tend towards zero' (things like slowly decaying signals etc).

Offline erikd

JGO Ninja


Medals: 16
Projects: 4
Exp: 14 years


Maximumisness


« Reply #12 - Posted 2014-04-28 04:19:06 »

Thanks for the tips, dleskov.
I didn't see any JIT activity in the output, so I guess it got properly AOT compiled.
sun.reflect.misc.Trampoline is always JIT-compiled, so you should see at least those four lines.

Sorry I wasn't clear.
I did see that Trampoline class getting JIT-ed, but nothing of my own code.

1  
2  
[JIT compiler] compile sun.reflect.misc.Trampoline
[JIT compiler] compilation finished in 12ms, classes: 1

Offline dleskov

Senior Member


Medals: 10



« Reply #13 - Posted 2014-05-16 08:08:47 »

Our campaign is now libGDX-endorsed:

http://www.badlogicgames.com/wordpress/?p=3442

Offline Roquen
« Reply #14 - Posted 2014-05-16 08:38:10 »

If you don't need denormals I'd expect you could just use a JNI method to set the FP-control word per thread.
Offline dleskov

Senior Member


Medals: 10



« Reply #15 - Posted 2014-05-16 09:36:19 »

If you don't need denormals I'd expect you could just use a JNI method to set the FP-control word per thread.
Technically that would be against the JNI spec, which says a native method altering FPU flags is responsible for saving and restoring them. My colleague says HotSpot used to have an option to forcefully save/restore those flags, most likely to guard against the misbehaving native methods.

Offline Roquen
« Reply #16 - Posted 2014-05-16 10:07:14 »

A more reasonable route would be to simply wrap the entry/exit of the SP with FP-control word change/restores.  Although control word changes are pricey individually, amortized across the SP update will probably make them very cheap.  That way there's no concern about gotcha outside of these regions.
Offline loom_weaver

JGO Coder


Medals: 17



« Reply #17 - Posted 2014-05-16 23:35:36 »

I just made my first build with this, and I must say I'm impressed with how easy it all is. A native build of a project with some libs and dlls is literally just a few clicks away.

Is it possible to script this?
Offline dleskov

Senior Member


Medals: 10



« Reply #18 - Posted 2014-05-20 12:03:02 »

Is it possible to script this?

Once you have created the respective project files, compilation and packaging from the command line is as simple as

1  
2  
jc =p project.prj
xpack project.jpn


(There is a twist if you want to further protect the native executable. See section "Installations protected by license managers" in the "Deployment Automation" Chapter of the User's Guide.)

Is that what you were asking?

Offline dleskov

Senior Member


Medals: 10



« Reply #19 - Posted 2014-05-30 10:39:28 »

Tomorrow is the last day of the campaign, so just bumping up the thread.

Offline dleskov

Senior Member


Medals: 10



« Reply #20 - Posted 2014-06-01 11:27:35 »

The campaign's over, raised $6,473 this time. Thanks everyone!

Offline princec

JGO Kernel


Medals: 363
Projects: 3
Exp: 16 years


Eh? Who? What? ... Me?


« Reply #21 - Posted 2014-06-02 12:01:06 »

Well done, Dmitry.

Cas Smiley

Offline erikd

JGO Ninja


Medals: 16
Projects: 4
Exp: 14 years


Maximumisness


« Reply #22 - Posted 2014-06-02 18:03:28 »

Thanks for the opportunity!

Quote
If you don't need denormals I'd expect you could just use a JNI method to set the FP-control word per thread.
Sounds interesting, how would that work? Like calling a method once and the denormalization issue is gone, or calling a method at every point a denormalization issue could occur?
Currently I either add an offset or 'nudge towards zero', so if it's the latter than I'm not sure it'd be worth it.

Pages: [1]
  ignore  |  Print  
 
 

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

CopyableCougar4 (23 views)
2014-08-22 19:31:30

atombrot (34 views)
2014-08-19 09:29:53

Tekkerue (30 views)
2014-08-16 06:45:27

Tekkerue (28 views)
2014-08-16 06:22:17

Tekkerue (18 views)
2014-08-16 06:20:21

Tekkerue (27 views)
2014-08-16 06:12:11

Rayexar (65 views)
2014-08-11 02:49:23

BurntPizza (41 views)
2014-08-09 21:09:32

BurntPizza (31 views)
2014-08-08 02:01:56

Norakomi (41 views)
2014-08-06 19:49:38
List of Learning Resources
by Longor1996
2014-08-16 10:40:00

List of Learning Resources
by SilverTiger
2014-08-05 19:33:27

Resources for WIP games
by CogWheelz
2014-08-01 16:20:17

Resources for WIP games
by CogWheelz
2014-08-01 16:19:50

List of Learning Resources
by SilverTiger
2014-07-31 16:29:50

List of Learning Resources
by SilverTiger
2014-07-31 16:26:06

List of Learning Resources
by SilverTiger
2014-07-31 11:54:12

HotSpot Options
by dleskov
2014-07-08 01:59:08
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!