SlideShare a Scribd company logo
Аудитория
Руби освобождает
страницы
gc_sweep_finish(rb_objspace_t *objspace)
heap_pages_free_unused_pages(rb_objspace_t *objspace)
heap_page_free(rb_objspace_t *objspace, struct heap_page *page)
{
free(page);
}
О чем поговорим
• как работает GC
• как устроен GC
• планы ruby team
gc.c
9381 lines and counting
На первый взгляд
Через пару дней
Чем занимается
• создает объекты
• выделяет память под них
• освобождает
• собирает статистику
• проверяет консистентность объектов
• …
• собирает мусор
Структура
RVALUE
GC::INTERNAL_CONSTANTS[:RVALUE_SIZE]
# => 40
* sizeof(RVALUE) is
* 20 if 32-bit, double is 4-byte aligned
* 24 if 32-bit, double is 8-byte aligned
* 40 if 64-bit
heap_page
GC::INTERNAL_CONSTANTS[:HEAP_OBJ_LIMIT]
# => 408
HEAP_PAGE_OBJ_LIMIT =
((HEAP_PAGE_SIZE - sizeof(struct heap_page_header)) /
sizeof(struct RVALUE))
RVALUE
typedef struct RVALUE {
union {
struct {
VALUE flags; /* always 0 for freed obj */
struct RVALUE *next;
} free;
struct RBasic basic;
struct RObject object;
struct RClass klass;
struct RString string;
...
struct RComplex complex;
...
} as;
} RVALUE;
RString
struct RString {
struct RBasic basic;
union {
struct {
long len;
char *ptr;
union {
long capa;
VALUE shared;
} aux;
} heap;
char ary[RSTRING_EMBED_LEN_MAX + 1];
} as;
};
Развитие
• early - Mark & Sweep
• 1.9.3 - Lazy Sweep
• 2.0 - CoW friendly
• 2.1 - Mark major / minor
• 2.2 - Inc major Mark, symbols
Mark & Sweep
Mark & Sweep
Mark & Sweep
ObjectSpace.reachable_objects_from_root.keys
[
[0] "vm",
[1] "machine_context",
[2] "global_list",
[3] "end_proc",
[4] "global_tbl"
]
Mark & Sweep
Mark & Sweep
Mark & Sweep
> a = 'a' * 1024 * 1024 * 500
> a = nil; 4.times { GC.start }
Mark & Sweep
Mark
gc_mark_roots(rb_objspace_t *objspace, const char **categoryp) {
rb_thread_t *th = GET_THREAD();
rb_vm_mark(th->vm);
mark_tbl(objspace, finalizer_table);
mark_current_machine_context(objspace, th);
rb_gc_mark_encodings();
/* mark protected global variables */
rb_gc_mark_maybe(*list->varptr);
rb_mark_end_proc();
rb_gc_mark_global_tbl();
}
Sweep
gc_sweep(rb_objspace_t *objspace)
{
if (immediate_sweep) {
gc_sweep_start(objspace);
gc_sweep_rest(objspace);
}
else {
}
gc_heap_prepare_minimum_pages(objspace, heap_eden);
}
Sweep
gc_sweep_step(rb_objspace_t *objspace, rb_heap_t *heap)
{
while (sweep_page) {
heap->sweep_pages = next = sweep_page->next;
gc_page_sweep(objspace, heap, sweep_page);
heap_unlink_page(objspace, heap, sweep_page);
heap_add_page(objspace, heap_tomb, sweep_page);
sweep_page = next;
}
if (heap->sweep_pages == NULL) {
gc_sweep_finish(objspace);
}
return heap->free_pages != NULL;
}
Lazy Sweep
Lazy Sweep
gc_sweep_continue(rb_objspace_t *objspace, rb_heap_t *heap)
Copy on Write
(CoW)
heap_page
struct heap_page {
struct heap_page *prev;
short total_slots;
short free_slots;
short final_slots;
struct heap_page *free_next;
struct heap_page *next;
/* the following three bitmaps are cleared at the beginning of full GC */
bits_t mark_bits[HEAP_PAGE_BITMAP_LIMIT];
};
RGenGC
Major
Minor
Minor
Minor
4.times { GC.start }
if (objspace->last_major_gc > 3 /* magic number */) {
gc_report(1, objspace, "gc_marks_finish: next is full GC!!)n");
objspace->rgengc.need_major_gc |= GPR_FLAG_MAJOR_BY_NOFREE;
}
Major через каждые 3 Minor цикла
RIncGC
только для Major Mark
RIncGC Major Mark
RIncGC Major Mark
objspace->rincgc.step_slots =
(objspace->marked_slots * 2) /
((objspace->rincgc.pooled_slots / HEAP_PAGE_OBJ_LIMIT) + 1);
RIncGC Major Mark
RIncGC Major Mark
heap_prepare(rb_objspace_t *objspace, rb_heap_t *heap)
RGenGC
RIncGC
Restricted
Много слайдов про
remember set
Много слайдов про
write unprotected objects
Немного слайдов про
write protected objects
Можно найти
• http://www.atdot.net/~ko1/activities/
2015_rubyconfph_pub.pdf
• http://www.atdot.net/fp_store/f.p61can/file.data-
incremental-gc.pdf
Дополнительно
• http://tmm1.net/ruby21-rgengc/
• https://ruby-hacking-guide.github.io/gc.html
• Ruby Under a Microscope - Pat Shaughnessy
• http://engineering.heroku.com/blogs/2015-02-04-
incremental-gc
Дальнейшее развитие
GC
ссылочка
https://esa-pages.io/p/sharing/2933/posts/
5/2075ee3ce5a11a81cd00.html
Оптимизация Sweep
Спасибо
achempion

More Related Content

What's hot

DV-Discovery
DV-DiscoveryDV-Discovery
DV-Discovery
Igor Efremov
 
Эффективные алгоритмы поиска подобных объектов для терабайтов данных / Евгени...
Эффективные алгоритмы поиска подобных объектов для терабайтов данных / Евгени...Эффективные алгоритмы поиска подобных объектов для терабайтов данных / Евгени...
Эффективные алгоритмы поиска подобных объектов для терабайтов данных / Евгени...
Ontico
 
лекция №16
лекция №16лекция №16
лекция №16student_kai
 
Повышение конверсии через оптимизацию JS
Повышение конверсии через оптимизацию JSПовышение конверсии через оптимизацию JS
Повышение конверсии через оптимизацию JS
Антон Плешивцев
 
"Применение инфраструктуры YT для поиска нефти и газа". Максим Рябинский, Янд...
"Применение инфраструктуры YT для поиска нефти и газа". Максим Рябинский, Янд..."Применение инфраструктуры YT для поиска нефти и газа". Максим Рябинский, Янд...
"Применение инфраструктуры YT для поиска нефти и газа". Максим Рябинский, Янд...
Yandex
 
Динамика и статика — метрики графов социальных сетей - Cергей Зефиров
Динамика и статика — метрики графов социальных сетей - Cергей ЗефировДинамика и статика — метрики графов социальных сетей - Cергей Зефиров
Динамика и статика — метрики графов социальных сетей - Cергей Зефиров
Yandex
 
Школа-студия разработки приложений для iOS. Лекция 1. Objective-C
Школа-студия разработки приложений для iOS. Лекция 1. Objective-CШкола-студия разработки приложений для iOS. Лекция 1. Objective-C
Школа-студия разработки приложений для iOS. Лекция 1. Objective-CГлеб Тарасов
 
Марина Степанова "Много объектов на карте"
Марина Степанова "Много объектов на карте"Марина Степанова "Много объектов на карте"
Марина Степанова "Много объектов на карте"
Yandex
 
Пространственные характеристики
Пространственные характеристикиПространственные характеристики
Пространственные характеристики
Дмитрий Колодезев
 
Дуров Р. - Cocos2d
Дуров Р. - Cocos2dДуров Р. - Cocos2d
Дуров Р. - Cocos2d
Innim
 
DSLs in Lisp and Clojure
DSLs in Lisp and ClojureDSLs in Lisp and Clojure
DSLs in Lisp and Clojure
Vasil Remeniuk
 
Модули на C для Ruby
Модули на C для RubyМодули на C для Ruby
Модули на C для Ruby
racoons
 
кп по моделир в Cad cam
кп по моделир в Cad camкп по моделир в Cad cam
кп по моделир в Cad camstudent_kai
 
msumobi2. Лекция 1
msumobi2. Лекция 1msumobi2. Лекция 1
msumobi2. Лекция 1
Глеб Тарасов
 
шлапак 20.10.2017
шлапак 20.10.2017шлапак 20.10.2017
шлапак 20.10.2017
Ukrainian Nuclear Society
 
Mongo db aggregation
Mongo db aggregationMongo db aggregation
Mongo db aggregation
Acceptic
 
Масштабируемость в распределенных in-memory системах
Масштабируемость в распределенных in-memory системахМасштабируемость в распределенных in-memory системах
Масштабируемость в распределенных in-memory системах
Vladimir Ozerov
 
Наибольший общий делитель
Наибольший общий делительНаибольший общий делитель
Наибольший общий делитель
DEVTYPE
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)
Technopark
 

What's hot (20)

Lisp8
Lisp8Lisp8
Lisp8
 
DV-Discovery
DV-DiscoveryDV-Discovery
DV-Discovery
 
Эффективные алгоритмы поиска подобных объектов для терабайтов данных / Евгени...
Эффективные алгоритмы поиска подобных объектов для терабайтов данных / Евгени...Эффективные алгоритмы поиска подобных объектов для терабайтов данных / Евгени...
Эффективные алгоритмы поиска подобных объектов для терабайтов данных / Евгени...
 
лекция №16
лекция №16лекция №16
лекция №16
 
Повышение конверсии через оптимизацию JS
Повышение конверсии через оптимизацию JSПовышение конверсии через оптимизацию JS
Повышение конверсии через оптимизацию JS
 
"Применение инфраструктуры YT для поиска нефти и газа". Максим Рябинский, Янд...
"Применение инфраструктуры YT для поиска нефти и газа". Максим Рябинский, Янд..."Применение инфраструктуры YT для поиска нефти и газа". Максим Рябинский, Янд...
"Применение инфраструктуры YT для поиска нефти и газа". Максим Рябинский, Янд...
 
Динамика и статика — метрики графов социальных сетей - Cергей Зефиров
Динамика и статика — метрики графов социальных сетей - Cергей ЗефировДинамика и статика — метрики графов социальных сетей - Cергей Зефиров
Динамика и статика — метрики графов социальных сетей - Cергей Зефиров
 
Школа-студия разработки приложений для iOS. Лекция 1. Objective-C
Школа-студия разработки приложений для iOS. Лекция 1. Objective-CШкола-студия разработки приложений для iOS. Лекция 1. Objective-C
Школа-студия разработки приложений для iOS. Лекция 1. Objective-C
 
Марина Степанова "Много объектов на карте"
Марина Степанова "Много объектов на карте"Марина Степанова "Много объектов на карте"
Марина Степанова "Много объектов на карте"
 
Пространственные характеристики
Пространственные характеристикиПространственные характеристики
Пространственные характеристики
 
Дуров Р. - Cocos2d
Дуров Р. - Cocos2dДуров Р. - Cocos2d
Дуров Р. - Cocos2d
 
DSLs in Lisp and Clojure
DSLs in Lisp and ClojureDSLs in Lisp and Clojure
DSLs in Lisp and Clojure
 
Модули на C для Ruby
Модули на C для RubyМодули на C для Ruby
Модули на C для Ruby
 
кп по моделир в Cad cam
кп по моделир в Cad camкп по моделир в Cad cam
кп по моделир в Cad cam
 
msumobi2. Лекция 1
msumobi2. Лекция 1msumobi2. Лекция 1
msumobi2. Лекция 1
 
шлапак 20.10.2017
шлапак 20.10.2017шлапак 20.10.2017
шлапак 20.10.2017
 
Mongo db aggregation
Mongo db aggregationMongo db aggregation
Mongo db aggregation
 
Масштабируемость в распределенных in-memory системах
Масштабируемость в распределенных in-memory системахМасштабируемость в распределенных in-memory системах
Масштабируемость в распределенных in-memory системах
 
Наибольший общий делитель
Наибольший общий делительНаибольший общий делитель
Наибольший общий делитель
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)
 

Viewers also liked

STI Policy for Iraq
STI Policy for IraqSTI Policy for Iraq
STI Policy for Iraq
Ali Albeer
 
FlowRateGUI
FlowRateGUIFlowRateGUI
FlowRateGUI
Jacob Gonzalez
 
Pei colegio metropolitano
Pei colegio metropolitanoPei colegio metropolitano
Pei colegio metropolitano
rodrigo alvarado amaris
 
pp linkedin
pp linkedinpp linkedin
pp linkedin
Michael Woods
 
Diferencia entre escuchar y oir
Diferencia entre escuchar y oirDiferencia entre escuchar y oir
Diferencia entre escuchar y oir
Luisa Sandoval
 
Valor de la escucha
Valor de la escuchaValor de la escucha
Valor de la escucha
Luisa Sandoval
 
Línea de tiempo
Línea de tiempoLínea de tiempo
Línea de tiempo
ESTEFANIESP
 
Pei colegio metropolitano
Pei colegio metropolitanoPei colegio metropolitano
Pei colegio metropolitano
rodrigo alvarado amaris
 
รายงานการอบรมปฏิบัติการ วัดผล
รายงานการอบรมปฏิบัติการ วัดผลรายงานการอบรมปฏิบัติการ วัดผล
รายงานการอบรมปฏิบัติการ วัดผล
จุ๊ จุฑาทิพย์
 
Development of Mobile Applications
Development of Mobile ApplicationsDevelopment of Mobile Applications
Development of Mobile Applications
Dávid Kaya
 
mri ruby gil
mri ruby gilmri ruby gil
mri ruby gil
achempion
 

Viewers also liked (15)

STI Policy for Iraq
STI Policy for IraqSTI Policy for Iraq
STI Policy for Iraq
 
FlowRateGUI
FlowRateGUIFlowRateGUI
FlowRateGUI
 
Pei colegio metropolitano
Pei colegio metropolitanoPei colegio metropolitano
Pei colegio metropolitano
 
pp linkedin
pp linkedinpp linkedin
pp linkedin
 
เเบบ 2
เเบบ 2เเบบ 2
เเบบ 2
 
Diferencia entre escuchar y oir
Diferencia entre escuchar y oirDiferencia entre escuchar y oir
Diferencia entre escuchar y oir
 
Valor de la escucha
Valor de la escuchaValor de la escucha
Valor de la escucha
 
Línea de tiempo
Línea de tiempoLínea de tiempo
Línea de tiempo
 
Pei colegio metropolitano
Pei colegio metropolitanoPei colegio metropolitano
Pei colegio metropolitano
 
โครงการ เยี่ยมบ้าน
โครงการ     เยี่ยมบ้านโครงการ     เยี่ยมบ้าน
โครงการ เยี่ยมบ้าน
 
หน้าที่พลเมือง
หน้าที่พลเมืองหน้าที่พลเมือง
หน้าที่พลเมือง
 
เอกสารที่เกี่ยวข้อง 1
เอกสารที่เกี่ยวข้อง 1เอกสารที่เกี่ยวข้อง 1
เอกสารที่เกี่ยวข้อง 1
 
รายงานการอบรมปฏิบัติการ วัดผล
รายงานการอบรมปฏิบัติการ วัดผลรายงานการอบรมปฏิบัติการ วัดผล
รายงานการอบรมปฏิบัติการ วัดผล
 
Development of Mobile Applications
Development of Mobile ApplicationsDevelopment of Mobile Applications
Development of Mobile Applications
 
mri ruby gil
mri ruby gilmri ruby gil
mri ruby gil
 

Similar to mri ruby GC

Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"
Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"
Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"
Fwdays
 
статический анализ кода
статический анализ кодастатический анализ кода
статический анализ кодаAndrey Karpov
 
Статический анализ кода
Статический анализ кода Статический анализ кода
Статический анализ кода
Pavel Tsukanov
 
Александр Гранин, "Декларативно-функциональный дизайн на С++11"
Александр Гранин, "Декларативно-функциональный дизайн на С++11"Александр Гранин, "Декларативно-функциональный дизайн на С++11"
Александр Гранин, "Декларативно-функциональный дизайн на С++11"
Platonov Sergey
 
Функционально декларативный дизайн на C++
Функционально декларативный дизайн на C++Функционально декларативный дизайн на C++
Функционально декларативный дизайн на C++
Alexander Granin
 
Time series data in a relational database. TimescaleDB and PipelineDB extensi...
Time series data in a relational database. TimescaleDB and PipelineDB extensi...Time series data in a relational database. TimescaleDB and PipelineDB extensi...
Time series data in a relational database. TimescaleDB and PipelineDB extensi...
Ivan Muratov
 
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Yandex
 
Чем заняться вечером, если я знаю сколько будет ++i + ++i / Андрей Бородин (Y...
Чем заняться вечером, если я знаю сколько будет ++i + ++i / Андрей Бородин (Y...Чем заняться вечером, если я знаю сколько будет ++i + ++i / Андрей Бородин (Y...
Чем заняться вечером, если я знаю сколько будет ++i + ++i / Андрей Бородин (Y...
Ontico
 
Apache spark
Apache sparkApache spark
Apache spark
Anton Anokhin
 
Лекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building BlocksЛекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building Blocks
Mikhail Kurnosov
 
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru GroupКак не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
Mail.ru Group
 
Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)
Mikhail Kurnosov
 
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
CocoaHeads
 
Netmap (by luigi rizzo) простой и удобный opensource фреймворк для обработк...
Netmap (by luigi rizzo)   простой и удобный opensource фреймворк для обработк...Netmap (by luigi rizzo)   простой и удобный opensource фреймворк для обработк...
Netmap (by luigi rizzo) простой и удобный opensource фреймворк для обработк...Ontico
 
Cpp0x Introduction
Cpp0x IntroductionCpp0x Introduction
Cpp0x Introduction
Fedor Vompe
 
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Mikhail Kurnosov
 
pgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresqlpgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresql
Михаил Тюрин
 
Batch processing in rails
Batch processing in railsBatch processing in rails
Batch processing in rails
sergeymoiseev
 
Hacking PostgreSQL. Обзор исходного кода
Hacking PostgreSQL. Обзор исходного кодаHacking PostgreSQL. Обзор исходного кода
Hacking PostgreSQL. Обзор исходного кода
Anastasia Lubennikova
 
C++ exceptions
C++ exceptionsC++ exceptions
C++ exceptions
Platonov Sergey
 

Similar to mri ruby GC (20)

Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"
Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"
Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"
 
статический анализ кода
статический анализ кодастатический анализ кода
статический анализ кода
 
Статический анализ кода
Статический анализ кода Статический анализ кода
Статический анализ кода
 
Александр Гранин, "Декларативно-функциональный дизайн на С++11"
Александр Гранин, "Декларативно-функциональный дизайн на С++11"Александр Гранин, "Декларативно-функциональный дизайн на С++11"
Александр Гранин, "Декларативно-функциональный дизайн на С++11"
 
Функционально декларативный дизайн на C++
Функционально декларативный дизайн на C++Функционально декларативный дизайн на C++
Функционально декларативный дизайн на C++
 
Time series data in a relational database. TimescaleDB and PipelineDB extensi...
Time series data in a relational database. TimescaleDB and PipelineDB extensi...Time series data in a relational database. TimescaleDB and PipelineDB extensi...
Time series data in a relational database. TimescaleDB and PipelineDB extensi...
 
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
 
Чем заняться вечером, если я знаю сколько будет ++i + ++i / Андрей Бородин (Y...
Чем заняться вечером, если я знаю сколько будет ++i + ++i / Андрей Бородин (Y...Чем заняться вечером, если я знаю сколько будет ++i + ++i / Андрей Бородин (Y...
Чем заняться вечером, если я знаю сколько будет ++i + ++i / Андрей Бородин (Y...
 
Apache spark
Apache sparkApache spark
Apache spark
 
Лекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building BlocksЛекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building Blocks
 
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru GroupКак не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
 
Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)
 
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
 
Netmap (by luigi rizzo) простой и удобный opensource фреймворк для обработк...
Netmap (by luigi rizzo)   простой и удобный opensource фреймворк для обработк...Netmap (by luigi rizzo)   простой и удобный opensource фреймворк для обработк...
Netmap (by luigi rizzo) простой и удобный opensource фреймворк для обработк...
 
Cpp0x Introduction
Cpp0x IntroductionCpp0x Introduction
Cpp0x Introduction
 
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
 
pgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresqlpgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresql
 
Batch processing in rails
Batch processing in railsBatch processing in rails
Batch processing in rails
 
Hacking PostgreSQL. Обзор исходного кода
Hacking PostgreSQL. Обзор исходного кодаHacking PostgreSQL. Обзор исходного кода
Hacking PostgreSQL. Обзор исходного кода
 
C++ exceptions
C++ exceptionsC++ exceptions
C++ exceptions
 

mri ruby GC