help-jel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: CompiledExpression.evaluate implementation


From: Konstantin L. Metlov
Subject: Re: CompiledExpression.evaluate implementation
Date: Sun, 29 Nov 2020 18:49:22 +0300
User-agent: SquirrelMail/1.4.23 [SVN]

Dear Mark,

I've made a JEL 2.1.2 release today (available at the usual
https://www.gnu.org/software/jel/ ). It is identical to the last
pre-release code I've sent you.

With the best regards,
                             Konstantin.

> Konstantin,
>
> On Tue, 17 Nov 2020, Konstantin L. Metlov wrote:
>
>> Dear Mark,
>>
>> thank you for your suggestion ! I've done just that and also cleaned up
>> all the other JDK14 compiler warnings.
>>
>> The valueOf may be slower to create an object in some cases, but note
>> that
>> it also eliminates the need to free these objects. So, additionally to
>> using "valueOf" in the compiler itself, I've switched JEL code generator
>> to use it for creation of wrapper objects in the compiled expressions as
>> well.
>>
>> I've made another pre-release version today with these changes available
>> at
>>
>> http://www.donfti.ru/~metlov/jel-2_1_2-pre2.zip
>>
>> $ md5sum jel-2_1_2-pre2.zip
>> 995daac05794b29109267815df76284e  jel-2_1_2-pre2.zip
>> $ sha256sum jel-2_1_2-pre2.zip
>> f15e6e25b2d39f28c8a503cfd382c0361734a85c50d8e7e61195a2818d97ca43
>> jel-2_1_2-pre2.zip
>>
>> Could you please download it and see if it does not break anything for
>> you
>> ? You can conveniently browse the source changes on Savannah:
>
> Great, that works fine for me.  I have a reasonable amount of test
> code that uses JEL and nothing I can see breaks or changes with the
> new version.
>
>> http://svn.savannah.gnu.org/viewvc/jel/trunk/
>>
>> Still, the best performance with JEL can be achieved by eliminating the
>> object usage altogether and using only the primitive types. This can be
>> done by fixing the result type in the Evaluator.compile call to one of
>> the
>> Boolean.TYPE, Integer.TYPE, ... fields (note that these are not the
>> Boolean.class, Integer.class, etc) and then calling the corresponding
>> evaluate_boolean, evaluate_int, etc method of the CompiledExpression
>> directly. Setting the result type this way makes
>> CompiledExpression.getType() to always return the same value. The type
>> compatibility check (with widening conversion, if necessary) is then
>> going
>> to be done by JEL at compile time.
>
> Yes, I do this in a few circumstances, but in most cases because of
> the way the rest of the code is arranged I end up boxing the results
> in any case.  Rewriting everything to avoid wrapper classes is
> somewhere on my to-do list, but it would make the code quite a bit
> messier.
> Wouldn't it be nice to have first-class primitive types in java.
>
> Do you plan to release a 2.1.2 following these chanages or not?
> I don't really mind, but if there's about to be a numbered release
> I'll wait for that before I commit the JEL updates to my application.
>
> Thanks again for your efforts.
>
> Mark
>
> --
> Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
> m.b.taylor@bris.ac.uk +44-117-9288776  http://www.star.bris.ac.uk/~mbt/
>





reply via email to

[Prev in Thread] Current Thread [Next in Thread]