Быть в 10 раз эффективнее благодаря Groovy презентация

Содержание


Презентации» Технология» Быть в 10 раз эффективнее благодаря Groovy
Быть в 10 раз эффективнее благодаря GroovySmart1: система бронирования ТВ-рекламы
 Вся реклама на телеканалах 1+1, 2+2, ТЕТ,АрхитектураРазработкаПроизводительность
 Денормализация структуры БД
 Тяжелые отчеты обновляются по расписанию
 Ряд задачСтроки кодаОт Java к Groovy
 Smart1 - наш второй groovy проект
 ДоОпрос: Насколько Groovy эффективнее Java?
 4-6 раз, коллеги
 Я бы сказал 2-3Groovy - это гораздо больше, чем убрать из Java ; и типы!
 значительноКоротко и выразительно!
 Взять все проходящие размещения и отсортировать сначала поКоротко и выразительно!
 Вернуть короткие названия бюджетных месяцевКоротко и выразительно!
 Эфирное время конца программы – это время началаКоротко и выразительно!
 Если плательщик задан, то вернуть его, иначе взятьНемного сложнее?
 Взять размещения из самой популярной категорииJava, с использованием «библиотечных» groupBy и last:
 Java, с использованием «библиотечных»Java, прямая реализация:
 Java, прямая реализация:Сила Closure
 Настоящие возможности открываются, когда мы понимаем что такое Closure
Сила Closure
 Получить Map время, на название (названия уникальны для времени)Расширение существующих классов
 Мы можем добавлять методы и поля к ужеРасширение существующих классов
 Методы у Object дают нам следующий синтаксис:Расширение существующих классов
 Сделаем немного удобнее Hibernate Criteria API:DSL делается легкоDSL делается легкоSelenium junit тестДинамика
 Динамическое программирование позволяет нам понять что такое повторное использование поBidirectional AssociationBidirectional Association
 И теперь мы сразу можем работать:Bidirectional Association
 Этого писать не нужно:Lazy initializationНо не все так хорошо
 Скорость?
 IDE?Реально тормоз!
 Groovy работает в 10 раз медленнее JavaBenchmark Groovy, Grovy++, JavaНо на этом можно работать
 Groovy работает также как Python, Ruby,Benchmark Java, Python, RubyСкорость Groovy
 не забываем, что часто узкое место база данных
 любойGroovy++
 Статически типизированное расширение Groovy
 По скорости выполнения почти не уступаетIDEA
 IDEA в целом очень хорошо поддерживает groovy:
 Для работы сСпасибо



Слайды и текст этой презентации
Слайд 1
Описание слайда:
Быть в 10 раз эффективнее благодаря Groovy


Слайд 2
Описание слайда:
Smart1: система бронирования ТВ-рекламы Вся реклама на телеканалах 1+1, 2+2, ТЕТ, CITI продается через Smart1 Месячный оборот 00 000 000 гр. Информация о 1 300 000 размещениях рекламы Сложная модель продаж - аукцион  Отчеты  Интеграция с внешними системами: GFK Mark Data Media Workstation, 1C 2 разработчика; 1,5 года; внедрено на втором месяце разработки

Слайд 3
Описание слайда:

Слайд 4
Описание слайда:
Архитектура

Слайд 5
Описание слайда:
Разработка

Слайд 6
Описание слайда:
Производительность Денормализация структуры БД Тяжелые отчеты обновляются по расписанию Ряд задач выполняется только ночью  

Слайд 7
Описание слайда:
Строки кода

Слайд 8
Описание слайда:
От Java к Groovy Smart1 - наш второй groovy проект До перехода сомнения: что такого принципиального может дать groovy? зачем терять часть возможностей IDE? огромный тормоз После перехода: сожаление, что gwt не позволяет использовать groovy, чтобы полностью отказаться от java

Слайд 9
Описание слайда:
Опрос: Насколько Groovy эффективнее Java? 4-6 раз, коллеги Я бы сказал 2-3 раза, Алекс Ткачман Я обычно продуктивнее в 2 с лишним. Иногда groovy действительно упрощает проблему и я становлюсь в 3-5 раз продуктивнее. Давид Кларк Моя продуктивность легко достигает 10 раз. Jochen Theodorou  

Слайд 10
Описание слайда:
Groovy - это гораздо больше, чем убрать из Java ; и типы! значительно меньше кода код значительно читабельнее значительно выше повторное использование легко создаются DSL не нужен псевдокод

Слайд 11
Описание слайда:
Коротко и выразительно! Взять все проходящие размещения и отсортировать сначала по цене, потом по дате создания

Слайд 12
Описание слайда:

Слайд 13
Описание слайда:
Коротко и выразительно! Вернуть короткие названия бюджетных месяцев

Слайд 14
Описание слайда:
Коротко и выразительно! Эфирное время конца программы – это время начала первого из послепрограмных блоков, либо время конца программы

Слайд 15
Описание слайда:

Слайд 16
Описание слайда:
Коротко и выразительно! Если плательщик задан, то вернуть его, иначе взять плательщика из прошлого периода. Если в прошлом периоде нет плательщиков, то взять любого из агентства.

Слайд 17
Описание слайда:

Слайд 18
Описание слайда:
Немного сложнее? Взять размещения из самой популярной категории

Слайд 19
Описание слайда:
Java, с использованием «библиотечных» groupBy и last: Java, с использованием «библиотечных» groupBy и last:

Слайд 20
Описание слайда:
Java, прямая реализация: Java, прямая реализация:

Слайд 21
Описание слайда:
Сила Closure Настоящие возможности открываются, когда мы понимаем что такое Closure sort, findAll, groupBy и т.п – все навсего методы принимающие Closure и мы можем делать такие свои

Слайд 22
Описание слайда:
Сила Closure Получить Map время, на название (названия уникальны для времени)

Слайд 23
Описание слайда:
Расширение существующих классов Мы можем добавлять методы и поля к уже написанным классам без наследования. Наш mapUnique можно вызывать на любой коллекции robot.grp = 22.centi scheduleMonth.month = 2009.jan block.startTime = /17:59/.time

Слайд 24
Описание слайда:
Расширение существующих классов Методы у Object дают нам следующий синтаксис:

Слайд 25
Описание слайда:
Расширение существующих классов Сделаем немного удобнее Hibernate Criteria API:

Слайд 26
Описание слайда:
DSL делается легко

Слайд 27
Описание слайда:

Слайд 28
Описание слайда:
DSL делается легко

Слайд 29
Описание слайда:
Selenium junit тест

Слайд 30
Описание слайда:
Динамика Динамическое программирование позволяет нам понять что такое повторное использование по настоящему! Например давайте перестанем каждый раз делать одно и тоже для Bidirectional Association и Lazy Initialization:

Слайд 31
Описание слайда:
Bidirectional Association

Слайд 32
Описание слайда:
Bidirectional Association И теперь мы сразу можем работать:

Слайд 33
Описание слайда:
Bidirectional Association Этого писать не нужно:

Слайд 34
Описание слайда:
Lazy initialization

Слайд 35
Описание слайда:
Но не все так хорошо Скорость? IDE?

Слайд 36
Описание слайда:
Реально тормоз! Groovy работает в 10 раз медленнее Java

Слайд 37
Описание слайда:
Benchmark Groovy, Grovy++, Java

Слайд 38
Описание слайда:
Но на этом можно работать Groovy работает также как Python, Ruby, PHP и т.п.

Слайд 39
Описание слайда:
Benchmark Java, Python, Ruby

Слайд 40
Описание слайда:
Скорость Groovy не забываем, что часто узкое место база данных любой фрагмент можно переписать на java любой фрагмент можно переписать сделать Groovy++

Слайд 41
Описание слайда:
Groovy++ Статически типизированное расширение Groovy По скорости выполнения почти не уступает Java Может рассматриваться как альтернатива Scala Пишется небольшой группой энтузиастов (один хакер?), мало используется

Слайд 42
Описание слайда:
IDEA IDEA в целом очень хорошо поддерживает groovy: Для работы с динамическими методами и полями в IDEA есть Dynamic properties Работает выведение типов, в основном  Тем не менее: Для динамики мы теряем автоматический рефакторинг и высокоуровневый поиск (findUsages) В отладчике иногда сильно тормозит Step Into

Слайд 43
Описание слайда:
Спасибо


Скачать презентацию на тему Быть в 10 раз эффективнее благодаря Groovy можно ниже:

Похожие презентации