harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Aleksey Shipilev (JIRA)" <j...@apache.org>
Subject [jira] Updated: (HARMONY-5584) [drlvm][jit][opt][performance] Inliner heuristics improvements: hottness and instance initializer bonuses
Date Fri, 07 Mar 2008 16:29:46 GMT

     [ https://issues.apache.org/jira/browse/HARMONY-5584?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Aleksey Shipilev updated HARMONY-5584:
--------------------------------------

    Description: 
During the profiling of Scimark2 [1] it was found that inliner misses the inline opportunities
for monte_carlo. 

This is the code for hottest method:

	public static final double integrate(int Num_samples)
	{

		Random R = new Random(SEED);


		int under_curve = 0;
		for (int count=0; count<Num_samples; count++)
		{
			double x= R.nextDouble();
			double y= R.nextDouble();

			if ( x*x + y*y <= 1.0)
				 under_curve ++;
			
		}

		return ((double) under_curve / Num_samples) * 4.0;
	}

Problems are:
 1. nextDouble is not inlined
 2. nextDouble is internally synchronized 

Attached patch solves these two problems:
 1. fixing hotness bonus calculation. This is the issue Random.nextDouble() hit on: this method
called in hot cycle and missing inline opportunity due to glitch in scaling function, which
should be more additive rather than multiplicative.
 2. introducing instance initializer bonus. This helps to inline constructor with all corresponding
methods to help escape analysis with eliminating the synchronization in Random.nextDouble().

> [drlvm][jit][opt][performance] Inliner heuristics improvements: hottness and instance
initializer bonuses
> ---------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-5584
>                 URL: https://issues.apache.org/jira/browse/HARMONY-5584
>             Project: Harmony
>          Issue Type: Improvement
>         Environment: all
>            Reporter: Aleksey Shipilev
>
> During the profiling of Scimark2 [1] it was found that inliner misses the inline opportunities
for monte_carlo. 
> This is the code for hottest method:
> 	public static final double integrate(int Num_samples)
> 	{
> 		Random R = new Random(SEED);
> 		int under_curve = 0;
> 		for (int count=0; count<Num_samples; count++)
> 		{
> 			double x= R.nextDouble();
> 			double y= R.nextDouble();
> 			if ( x*x + y*y <= 1.0)
> 				 under_curve ++;
> 			
> 		}
> 		return ((double) under_curve / Num_samples) * 4.0;
> 	}
> Problems are:
>  1. nextDouble is not inlined
>  2. nextDouble is internally synchronized 
> Attached patch solves these two problems:
>  1. fixing hotness bonus calculation. This is the issue Random.nextDouble() hit on: this
method called in hot cycle and missing inline opportunity due to glitch in scaling function,
which should be more additive rather than multiplicative.
>  2. introducing instance initializer bonus. This helps to inline constructor with all
corresponding methods to help escape analysis with eliminating the synchronization in Random.nextDouble().

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message