[ https://issues.apache.org/jira/browse/MATH-585?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13047223#comment-13047223 ]
Brent Worden edited comment on MATH-585 at 6/10/11 2:43 PM: ------------------------------------------------------------ Here is a performance improvement suggestion to the implementation in the patch. Since the loop in calculateQ is always a fixed number of iterations, eliminate it and compute the polynomial directly. Also, instead of computing is as a1*v + a2*v^2 + a3*v^3 + ... a9*v^9 use the equivalent form v*(a1 + v*(a2 + v*(a3 + ... + v*(a8 + a9*v)))))))). This method eliminates about half of the multiplications needed to compute the polynomial. Apply the same technique to the loops found in Step 4 (lines 244-250 of MATH585-1.patch) and in Step 11 (lines 307-318). was (Author: brentworden): Here is a performance improvement suggestion to the implementation in the patch: Since the loop in calculateQ is always a fixed number of iterations, eliminate it and compute the polynomial directly. Also, instead of computing is as a1*v + a2*v^2 + a3*v^3 + ... a9*v^9 use the equivalent form v*(a1 + v*(a2 + v*(a3 + ... + v*(a8 + a9*v)))))))). This method eliminates about half of the multiplications needed to compute the polynomial. Apply the same technique to the loops found in Step 4 (lines 244-250 of MATH585-1.patch) and in Step 11 (lines 307-318). > Very slow generation of gamma random variates > --------------------------------------------- > > Key: MATH-585 > URL: https://issues.apache.org/jira/browse/MATH-585 > Project: Commons Math > Issue Type: Improvement > Affects Versions: 2.2, 3.0 > Environment: All > Reporter: Darren Wilkinson > Assignee: Mikkel Meyer Andersen > Labels: Gamma, Random > Attachments: MATH585-1.patch > > Original Estimate: 6h > Remaining Estimate: 6h > > The current implementation of gamma random variate generation works, but uses > an inversion method. This is well-known to be a bad idea. Usually a carefully > constructed rejection procedure is used. To give an idea of the magnitude of > the problem, the Gamma variate generation in Parallel COLT is roughly 50 > times faster than in Commons Math. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira