-
Notifications
You must be signed in to change notification settings - Fork 5
Сравнение скоростей способов доступа к CoreArray
Скорости выполнения бенчмарка при использовании связей (бенчмарк ниже):
Связь 1 (Java->GDSFormat): 0.006 - 0.008
Связь 2 (Java->Gdsfmt): 0.035 - 0.042
Связь 3 (C++->GDSFormat): 0.006 - 0.007
Связь 4 (R->Gdsfmt): 0.009 - 0.01
Зеленым цветом указан язык, на котором реализована библиотека.
Стрелка значит "A использует библиотеку B (через мост / напрямую)"
Из картинки видно, что так или иначе придется ссылаться на CoreArray, других библиотек нет.
У CoreArray есть две обертки, написанные автором- GDSFormat и gdsfmt.
GWASTools просто ссылается на gdsfmt, он включен в схему, потому что имеет много возможностей для конвертации GDS в другие форматы.
Для связи 1 (Java->GDSFormat) используется JNI, так как JNA гораздо медленнее.
Для связи 2 используется Rserve. (rJava плохо задокументирована и странно работает).
Бенчмарк (на Rserve/GDSFormat/JNI-GDSFormat код делает аналогичные вещи):
library(gdsfmt)
library(tictoc)
t<-as.numeric(Sys.time())
invisible((genofile <- openfn.gds("1000gen.gds")))
invisible((g <- read.gdsn(index.gdsn(genofile, "snp.position"), start=c(1), count=c(200000))))
closefn.gds(genofile);
print(as.numeric(Sys.time())-t,digits = 3)
Комментарий к бенчмарку:
Надо понимать, что бенчмарк показывает скорость передачи и конвертации большого массива данных (причем одномерного массива, при более сложной структуре данных результаты могут измениться), что далеко не всегда важный показатель. Вызов какой-нибудь одной функции(все действие происходит в c) и возврат одного простого элемента (типа числа) в джаву при любой связи будет происходить быстро.
Напоследок, нарезка скринов с результатами запусков:
- Project structure
- Heroku
- Coding Guidelines
- [Java](Coding Guidelines)
- Html
- Логирование (Java)
- Analyzers: [TEMPLATE]
- Общая схема вычисляемых функций
- Линейный коэффициент корреляции
- Уравнение линейной регрессии
- Анализ временных рядов
- Анализ одномерных временных рядов: вычисление тренда, сезонной и шумовой компонент несколькими способами
- Критерий Стьюдента
- Analyzers: Kolmogorov Smirnov Test for two samples
- Анализ главных компонент (Principal Component Analysis, PCA)
- Показатель Ляпунова для временных рядов
- Navigation
- REST API
- Классы - источники данных
- Добавление нового источника данных
- [Analyzers](Architecture of analize function)
- Analyzers (version 2)
- Пользователи, проекты и файлы
- Java R classic integration
- Renjin (R in JVM)
- R integration architecture
- R scripts
- RConfiguration
- Полезные функции в R
- Angular 2 in JavaScript
- Learning resources, etc.
- Angular 2 приложение проектов
- Точка входа для более быстрой разработки Angular 2 приложения
- Interpolation
- [Charts comparison](displaying graphs control)
- What is Servlet?
- Ace-editor
- Библиотека CoreArray
- Сборка CoreArray
- Сравнение скоростей способов доступа к CoreArray
- Переделка Gdsfmt под java
- Разбор структуры файла из центра биоинформатики