ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Vladimir Ozerov <voze...@gridgain.com>
Subject Deprecate GridFunc
Date Fri, 01 Apr 2016 08:03:49 GMT
Igniters,

This is about our infamous *GridFunc *class. I suggest to deprecate it and
strongly discourage any usage of any method from it.

*Motivation:*
Currently this class contains ~170 methods. Lots of this methods have poor
performance characteristics or broken semantics.
- Lots of collection manipulation methods are broken. You can easily loose
O(1) or O(log N) and have O(N). You can easily loose Set semantics - merge
two sets and this is not a set anymore. Etc, etc.. This is a nightmare. +
you allocate garbage.
- Some methods operate on varags while we always need no more than one
element -> unnecessary allocations.

But as these methods are convenient to use, developers tend to use them
without understanding of implications. As our product is
performance-sensitive, we certainly should avoid this.

For example, here is a code snippet from cache IO manager:

if (!F.exist(F.nodeIds(nodes), F0.not(F.contains(leftIds)))) {

    ...

}


And how do you think, what is "nodes" variable? Here it is:

F.view(F.viewReadOnly(ids, U.id2Node(ctx), p), F.notNull())


WTF? We *MUST* stop that.

*Proposal:*
1) Deprecate this class.
2) Move several useful and safe methods (like F.eq()) to separate
specialized utility classes.

Thoughts?

Vladimir.

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message