/asked by vladimir/

I'm running CreditRiskExample on 11 nodes cluster (16 Gb RAM, core i7, 1 Tb
each node). I'm using parallel stream of Java 8. Why parralel version which
uses Java 8 lambdas (Code B) is slower then not parallel version (Code A)?

Code A (Credit risk [crdRisk=627147.908398507, duration=73667ms]):

double[] losses = new double[num];
for (int i = 0; i < num; i++)
{
    for (Credit crd : portfolio) 
    {
        int remDays = Math.min(crd.getRemainingTerm(), horizon);

        if (rndGen.nextDouble() >= 1 - crd.getDefaultProbability(remDays))
            losses[i] += (1 + crd.getAnnualRate() * Math.min(horizon,
crd.getRemainingTerm()) / 365)
                * crd.getRemainingAmount();
        else
            losses[i] -= crd.getAnnualRate() * Math.min(horizon,
crd.getRemainingTerm()) / 365 *
                crd.getRemainingAmount();
    }
}
------------------------------------------------------------------------------
Code B (Credit risk [crdRisk=752244.1112362606, duration=151260ms]):

double[] losses = new double[num];

IntStream.range(0, num).parallel().forEach(i -> 
{
    for (Credit crd : portfolio) 
    {
        int remDays = Math.min(crd.getRemainingTerm(), horizon);

        if (rndGen.nextDouble() >= 1 - crd.getDefaultProbability(remDays))
            losses[i] += (1 + crd.getAnnualRate() * Math.min(horizon,
crd.getRemainingTerm()) / 365)
                * crd.getRemainingAmount();
        else
            losses[i] -= crd.getAnnualRate() * Math.min(horizon,
crd.getRemainingTerm()) / 365 *
                crd.getRemainingAmount();
    }
}
);

----- 
/This post is migrated from now discontinued Apache Ignite forum at 
http://apacheignite.readme.io/v1.0/discuss/



--
View this message in context: 
http://apache-ignite-users.70518.x6.nabble.com/Perfomance-Java-8-lambdas-tp70.html
Sent from the Apache Ignite Users mailing list archive at Nabble.com.

Reply via email to