[
https://issues.apache.org/jira/browse/MAHOUT-764?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sean Owen updated MAHOUT-764:
-----------------------------
Resolution: Fixed
Status: Resolved (was: Patch Available)
Yes I think it's pretty uncontroversial and speeds up several implementations
noticeably; this participates in some tight loops in some item-based
recommenders so removing the overhead is quite big.
> Rationalize DataModel.getNumUsersWithPreferenceFor() API
> --------------------------------------------------------
>
> Key: MAHOUT-764
> URL: https://issues.apache.org/jira/browse/MAHOUT-764
> Project: Mahout
> Issue Type: Improvement
> Components: Collaborative Filtering
> Affects Versions: 0.5
> Reporter: Sean Owen
> Assignee: Sean Owen
> Priority: Minor
> Labels: datamodel, varargs
> Fix For: 0.6
>
> Attachments: MAHOUT-764.patch
>
>
> DataModel has a method getNumUsersWithPreferenceFor(long... itemIDs). It does
> what it says. However I think this is a suboptimal API (for which we have me
> to blame).
> - All calls to this involve 1 or 2 arguments only
> - No implementation supports more than 2 arguments, which makes the signature
> misleading
> - All implementations internally have some logic like "if it's 1, do X, if
> it's args, do Y, otherwise fail"
> - Calling this method, which happens frequently, always incurs the overhead
> of allocating a long[]
> The change is simple: make this two methods, with one and two args
> respectively. Implementations would then just split their current
> implementation into these two methods.
> There is no API change for callers, at all, if invoked with 1 or 2 args. I
> assume callers are not trying 3+ args now, as it has never been supported.
> It does involve a straightforward change to implementors of DataModel.
> Open for comment?
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira