On Thu, May 23, 2019 at 1:53 PM Ahmet Altay <al...@google.com> wrote:

>
>
> On Thu, May 23, 2019 at 1:38 PM Lukasz Cwik <lc...@google.com> wrote:
>
>>
>>
>> On Thu, May 23, 2019 at 11:37 AM Rui Wang <ruw...@google.com> wrote:
>>
>>> A few obvious problems with this code:
>>>>   1. Removing the elements already processed from the bag requires
>>>> clearing and rewriting the entire bag. This is O(n^2) in the number of
>>>> input trades.
>>>>
>>> why it's not O(2 * n) to clearing and rewriting trade state?
>>>
>>>
>>>> public interface SortedMultimapState<K, V> extends State {
>>>>   // Add a value to the map.
>>>>   void put(K key, V value);
>>>>   // Get all values for a given key.
>>>>   ReadableState<Iterable<V>> get(K key);
>>>>  // Return all entries in the map.
>>>>   ReadableState<Iterable<KV<K, V>>> allEntries();
>>>>   // Return all entries in the map with keys <= limit. returned
>>>> elements are sorted by the key.
>>>>   ReadableState<Iterable<KV<K, V>>> entriesUntil(K limit);
>>>>
>>>  // Remove all values with the given key;
>>>>   void remove(K key);
>>>>  // Remove all entries in the map with keys <= limit.
>>>>   void removeUntil(K limit);
>>>>
>>> Will removeUntilExcl(K limit) also useful? It will remove all entries in
>>> the map with keys < limit.
>>>
>>>
>>>> Runners will sort based on the encoded value of the key. In order to
>>>> make this easier for users, I propose that we introduce a new tag on Coders
>>>> *PreservesOrder*. A Coder that contains this tag guarantees that the
>>>> encoded value preserves the same ordering as the base Java type.
>>>>
>>>
>>> Could you clarify what is  "encoded value preserves the same ordering as
>>> the base Java type"?
>>>
>>
>> Lets say A and B represent two different instances of the same Java type
>> like a double, then A < B (using the languages comparison operator) iff
>> encode(A) < encode(B) (note the encoded versions are compared
>> lexicographically)
>>
>
> Since coders are shared across SDKs, do we expect A < B iff e(A) < e(P)
> property to hold for all languages we support? What happens A, B sort
> differently in different languages?
>

That would have to be the property of the coder (which means that this
property probably needs to be represented in the portability representation
of the coder). I imagine the common use cases will be for simple coders
like int, long, string, etc., which are likely to sort the same in most
languages.


>
>>
>>
>>>
>>> -Rui
>>>
>>

Reply via email to