Коллектив Авторов - Цифровой журнал «Компьютерра» № 22
- Название:Цифровой журнал «Компьютерра» № 22
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Коллектив Авторов - Цифровой журнал «Компьютерра» № 22 краткое содержание
Lenovo в Москве: всё руководство в сборе Автор: Юрий Ильин
Сотовый телефон заменит билет на метро Автор: Юрий Ильин
Уимблдонская дополненная реальность Автор: Олег Парамонов
NFC в метрополитене, далее везде Автор: Юрий Ильин
Что ждёт Kinect и новый Xbox 360 в России Автор: Андрей Письменный
DisTREE ИТ-неделя: два дня и 25 фотографий Автор: Юрий Ильин
Nokia и «Билайн» занялись мобильным телевидением Автор: Андрей Письменный
ТерралабПромзона: Многоразовая крышка Автор: Николай Маслухин
Skype против «Мультифона»: в чём разница? Автор: Максим Букин
Panasonic VIERA TX-PR42G20 — телевизор с возможностями компьютера Автор: Ника Парамонова
Редактор видео YouTube Автор: Григорий Рудницкий
Промзона: Посудомойка из 2050-го Автор: Николай Маслухин
Промзона: Настенная корзина для белья Автор: Николай Маслухин
Суперкомпьютер IBM Watson: элементарно, Ватсон Автор: Олег Нечай
Вещь дня: Трекпад-цифровая клавиатура Автор: Михаил Карпов
Нетбуки и планшеты – кто победит Автор: Крестников Евгений
Промзона: Скакалка-заряжалка Автор: Николай Маслухин
Системные платы для платформы Intel Автор: Олег Нечай
Вещь дня: iPhone-джойстик, iPad-"Денди" Автор: Михаил Карпов
Промзона: Нано-био-холодильник Автор: Николай Маслухин
Софт: онлайновые RSS-ридеры против инфоперегрузки Автор: Михаил Карпов
Когда наступит эра сверхчётких дисплеев Автор: Игорь Осколков
Своя играВасилий Щепетнёв: Искушение пустынника Владимира Автор: Василий Щепетнев
E3 2010: кто победит в войне контроллеров Автор: Андрей Письменный
Кафедра Ваннаха: Готовый корм для памяти Автор: Ваннах Михаил
Кивино гнездо: Люди и насекомые Автор: Берд Киви
В чём секрет многозадачности iOS4 Автор: Андрей Письменный
Василий Щепетнёв: Жизнь и смерть деревянных солдат — III Автор: Василий Щепетнев
Кивино гнездо: Безмолвный очевидец Автор: Берд Киви
дана бойд: 4chan и взлом экономики внимания Автор: дана бойд
СМИ оказались равнее других Автор: Юрий Ревич
Кафедра Ваннаха: Левиафан как форма искусственной жизни Автор: Ваннах Михаил
Василий Щепетнёв: Полёт гусеницы Автор: Василий Щепетнев
Интерактив"Нивал" и 1С о выставке E3 2010 Автор: Андрей Письменный
Елена Дорохина о юбилее Price.ru и его новой версии Автор: Юрий Ильин
БлогиАнатолий Вассерман: Бдительность и репрессии Автор: Анатолий Вассерман
Анатолий Вассерман: Новые интерфейсы Автор: Анатолий Вассерман
ReaDitorialНет ничего проще Автор: Герман Царев
Голубятня-ОнлайнГолубятня: Коннект-позор Автор: Сергей Голубицкий
Голубятня: Twitter Автор: Сергей Голубицкий
Голубятня: Интерактив №1 Автор: Сергей Голубицкий
Цифровой журнал «Компьютерра» № 22 - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Отсюда возникает желание создавать многопоточные «быстрые» приложение, однако, затрачивая на это меньше времени и сил. Было бы здорово, если бы процесс создания, контроля, синхронизации потоков проходил в автоматическом режиме без участия разработчика.
И такой механизм уже существует, однако, далеко не всем о нем известно. В настоящей статье я попытаюсь раскрыть суть и основы этого удобного и полезного инструмента для разработчиков многопоточных приложений.
И так, знакомьтесь – MapReduce. Эта модель программирования для обработки больших объемов данных. Ее создателем считается небезызвестная компания Google. В своей работе она активно применяет этот механизм, что позволяет говорить о его удобности, быстродействии и практичности.
Рассмотрим обработку данных с применением этой технологии. MapReduce включает в себя 3 этапа. Подготовка данных, определение функции map и определении функции reduce. Рассмотрим каждый их этих этапов.
Подготовка данных. Все данные, которые необходимо каким-либо образом обработать, программист должен разбить на некоторое количество частей. Количество этих частей программист выбирает самостоятельно, основываясь на размере данных и количестве обрабатывающих устройств (количестве ядер, процессоров, ЭВМ в кластера и т.д.).
Определение функции map. Функция map является, по сути, обработчиком данных. В последующем эта функция будет запускаться в каждом потоке для обработки тех частей данных, которые подготовил программист на первом этапе. Параметром является часть данных для обработки. Возвращать функция должна результат обработки этих данных. Возвращаемое значение определяется программистом в зависимости от решаемой задачи.
Определение функции reduce. Функция reduce служит для сборки обработанных частей данных в единый результат. Программист определяет эту функции исходя из поставленной задачи и требуемого результата.
После этого, для запуска обработки данных необходимо вызвать всего одну функцию (ее название зависит от реализации механизма MapReduce, например в Qt подобная функция имеет название mappedReduced), указав в ее параметрах: подготовленные разбитые на части данные, функцию map и функцию reduce.
После вызова этой функции будет автоматически запущено необходимое количество потоков, которые обработают все входные данные и соберут единый результат. В итоге – минимум затрат от программиста и максимальная производительность. Как показывает практика, приложения, написанные с применением MapReduce, оказываются минимум в 2 раза быстрее, чем приложения, использующие обычный механизм запуска потоков.
Данная технология реализована для различных языков программирования, например, для С++, С#, Java и других.
Удобной, простой в использовании с одной стороны, и показывающие прекрасные результаты быстродействия с другой, является реализация механизма MapReduce в объектно-ориентированной кроссплатформенной библиотеке Qt.
Рассмотрим простой пример. Пусть имеется вектор чисел, имеющий очень большую длину. Необходимо посчитать количество вхождений какого-либо числа в этом векторе.
Однопоточное приложение будет в цикле по-очереди перебирать все значения вектора, сравнивать их с заданным значением и в случае совпадения, увеличивать счетчик вхождений на единицу.
В случае применения MapReduce, программист должен разбить исходный вектор на несколько векторов. Функция map в таком случае будет действовать по алгоритму однопоточной версии, параметром будет являться вектор чисел, возвращаемым значением будет количество вхождений заданного числа. Функция reduce будет проводить операцию сложения результатов после каждого выполнения функции map.
В итоге, после запуска обработки будут автоматически созданы несколько потоков в зависимости от числа обрабатывающих устройств и количества входных данных. Каждый поток будет обрабатывать свою часть входного вектора и считать количество вхождений в нем. После завершения всех потоков будет доступен конечный результат.
В заключении хотелось бы сказать, что применять MapReduce необходимо обоснованно, обдуманно, иначе выигрыш времени, получаемый при распараллеливании, может быть меньше, чем время на создание новых потоков. Но надеюсь, что после освоения этого механизма каждый, кто будет слышать про обработку больших объемов данных, будет думать – да нет же ничего проще =)
К оглавлению
Голубятня-Онлайн
Голубятня: Коннект-позор
Сергей Голубицкий
Опубликовано21 июня 2010 года
Признаюсь, несколько подряд айтишных тем уже занудили меня и набили оскомину. Знаете: IT летом — словно жмурка, к ночи помянутая. Бррр! Так что будем дозировать, будем дозировать. Сегодня — последняя реплика, а затем перерыв — на нивах культурного просвещения и соцполитбаталий.
Я никогда не перестану «по-децки» наивно удивляться беспределу, творимому московскими опсосами. В смысле, что у меня элементарно в голове не укладываются причины и мотивы этого беспредела?! Ну почему так?! За что?! Неужели единственный объективный аргумент — это «лохов НУЖНО обувать по определению»?! Отъезжаешь от Московской области, и сразу же восстанавливаются рамки приличия: тарифы более или менее пристойные, поведение хоть и гадкое, но в пределах общепринятого во всем мире (другое дело, что опсосы повсюду на планете Земля одиозны по ту сторону добра и зла).
Нет, я правда бы хотел выслушать хоть кого-нибудь из Великой Тройки (с Большой Дороги) на предмет обоснования того, что они творят на просторах Новой Рязани и прилегающей к ней области. Может, есть какие-то объективные причины для ОСКОРБИТЕЛЬНЫХ тарифов, которыми грузятся московиты? Какая-то особая неприязнь? Внутреннее отторжение? Финансовые вилы и подводные камни? Скрытые поборы и налоги? Хоть что-то, что способно объяснить надругательство над пользователями...
Не буду никого продавливать эмоциями — просто приведу цифры. Тем более, что на вопиющий диссонанс, утвердившийся между тарифами московских опсосов и окружающего больную резервацию мира, имеет иррациональную тенденцию к нарастанию. В том смысле, что развиваются инфраструктуры, добавляются соты, устанавливаются новые передатчики, осваиваются новые протоколы, а ценовой разрыв между аналогичными услугами московских опсосов и предложениями на стороне всё увеличивается и увеличивается.
Когда я последний раз писал о несуразных тарифах «Билайн», МТС и «Мегафона» в Москве и Московской области в сравнении с предложениями украинских и молдавских операторов, в Новой Рязани ещё не было 3G. Поэтому сравнивать особо было нечего: с одной стороны, полноценный скоростной HSDPA и WCDMA, с другой — жалкие потуги, балансирующие между GPRS и EDGE. Тогда все кивали на военных: типа, защитники родины не дают частот, вставляют палки в колёса.
Читать дальшеИнтервал:
Закладка: