Я ищу коллекцию с наиболее эффективной параллельной операцией добавления элемента. Scala или Java это хорошо.
Я обычно:
- вставка 100 000 записей, по одной за раз
- не заботится о заказе
- читать и очищать коллекцию только при отсутствии добавления. Так что не критично
Кроме того, он должен работать с несколькими потоками (отсюда и параллельное ограничение). Но мне нужно, чтобы он был наиболее эффективным, когда нет параллелизма: проект для одновременной безопасности не должен иметь слишком большого влияния, когда нет параллельного доступа.
Я использую эту коллекцию для записи измерений производительности. Вот почему это должно быть максимально эффективным, чтобы не смещать слишком много фактической производительности. Однако, поскольку размер коллекции может быть большим и неизвестным заранее, он должен эффективно справляться с увеличением размера.
Так какую коллекцию лучше всего использовать?
В настоящее время я использовал mutable.ListBuffer
с buffer.synchronized{ ... }
вокруг операции добавления (и очистки). Я пытался использовать var buf: List
(scala) с аналогичным блоком synchronized{ ... }
, но это серьезно повлияло на измерения.