Ну меня спросили че не так с фьючарами и чем они в скале круче. Ну вот я показал. Хотя если конечно все пихать в волшебный форк-джойн пул который неявно блокирущие операции делает неблокирующими то конечно разницы никакой. Только его не существует.crypto5 wrote: Осталось повторить это девять раз.
Re: Интересное мнение про перспективы .NET
-
- Уже с Приветом
- Posts: 256
- Joined: 14 Jul 2011 09:07
- Location: SaintP -> NYC
Re: Re: Интересное мнение про перспективы .NET
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: Интересное мнение про перспективы .NET
В том, что изначально ты говорил, что FJT разрулит блокирующие операции (в частности ожидание сети). А это совершенно не так. Ничего оно не разрулит, еще и перформанс для таких операций может быть хуже, чем с обычным пулом потоков.crypto5 wrote:В чем увертки, не обьяснишь?
Теперь оказывается туда нужно асинхронное чтение запихивать (т.е. ни о каком ожидании сети речь больше не идет). Но заворачивать асинхронное чтение в FJ task - это какая-то бесполезная операция (если не сказать "вредительская"), зачем это нужно? Собственно о чем и речь, что FJ хорош для CPU-bound задач, а никак не для I/O-bound.
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: Re: Интересное мнение про перспективы .NET
Я не писал что FJ pool разрулит блокирующие операции к сети, подразумевалось что их действительно нужно интегрировать в fork join pool правильно, извини что ввел тебя в заблуждение.Интеррапт wrote:В том, что изначально ты говорил, что FJT разрулит блокирующие операции (в частности ожидание сети). А это совершенно не так. Ничего оно не разрулит, еще и перформанс для таких операций может быть хуже, чем с обычным пулом потоков.crypto5 wrote:В чем увертки, не обьяснишь?
Теперь оказывается туда нужно асинхронное чтение запихивать (т.е. ни о каком ожидании сети речь больше не идет). Но заворачивать асинхронное чтение в FJ task - это какая-то бесполезная операция (если не сказать больше), зачем это нужно? Собственно о чем и речь, что FJ хорош для CPU-bound задач, а никак не для I/O-bound.
In vino Veritas!
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: Re: Интересное мнение про перспективы .NET
Отлично, так какая причина почему я не могу использовать такую же стратегию в моем fork join pool-e?reality wrote:Нет. Специальный пул потоков так в 5-10 специальн выделенный для IO операций и не мешающий рабоать остальным СPU-bounded потокам.crypto5 wrote: Смешно, а в "другом" пуле какие то волшебные неблокирующиеся потоки?
Повторите это еще десять раз, только вряд ли это правдой станет.
И да это правда. "Основной" пул который будет рулить приложением будет АБСОЛЮТНО из неблокирующих операций. Ну вот ваще кристально неблокирующие и не зависящие от IO. Вот прямо как в нетти управляющие потоки. А все что завязано на дисковую подсистему к примеру будем себе спокойно работать отдельно и пропихивать в остольной поток готовые байтики из сокета.
In vino Veritas!
-
- Уже с Приветом
- Posts: 14407
- Joined: 26 May 2006 02:39
Re: Re: Интересное мнение про перспективы .NET
И вас даже не смущает что это один файл? Давайте я по шагам пройдусь.crypto5 wrote:По вашей же ссылке https://github.com/TechEmpower/Framewor ... /index.php начинается с $app->map('/json', function() {stenking wrote:Да? А покажите мне плиз где этот таинственный тест ?crypto5 wrote: Мы делаем вывод что вы сравниваете 2 разных теста, которых там аж 5-ять. В json ветке пхп кода никаких коннекшнов не создается, а возращается простой json kak и в джава коде.
https://github.com/TechEmpower/Framewor ... lcon-micro
1) $app = new Phalcon\Mvc\Micro() - всё нормально, загружаем фраимворк
2) $app['db'] = function() { ... } - полный капец. Коннектимся к базе.
3 ) $app['view'] = function() { .. } - ещё один капец . Загружаем и выполняем шаблонизатор который к тому же использует кеш на файловой системе ( io операции )
4 ) $app->map('/db') ..... добавляем дополнительные routes. Что бы эпп стал тяжелее и медленее. Как будто 2 и 3 было мало.
Файл должен быть такой:
Code: Select all
$app = new Phalcon\Mvc\Micro();
$app->map('/json', function() {
header("Content-Type: application/json");
echo json_encode(array('message' => 'Hello, World!'));
});
$app->handle();
Last edited by stenking on 11 Feb 2014 05:54, edited 1 time in total.
Бога нет.
-
- Уже с Приветом
- Posts: 256
- Joined: 14 Jul 2011 09:07
- Location: SaintP -> NYC
Re: Re: Интересное мнение про перспективы .NET
Мне кажется куда печальнее попасть в компанию в которой все пихают в ForkJoin pool потому что он сам все локи уберет и сделать все супер быстрым. А оглянуться по сторонам и посмотреть а что ваще еще есть в мире той же JVM хотя бы и что народ и как делает как то не с руки. Я думаю что 95% процентов знающих про аппликативные функторы до этого удосужились прочитать хотя бы спеку java.util.concurrent и откровенную чушь и не перформящие решения видят за километр. Future.get() ни в каком пуле под нагрузкой никогда в жизни перформить не будет.crypto5 wrote:Мне кстати кажется после общения с комьюнити в последнее время что скала это как раз отличный признак компаний/проектов куда попадать не надо не в коем случае, там куча людей которые умеют хорошо "бла-бла-бла апликативные функторы", а вот код хороший писать и внятно и доходчиво обьяснять свою точку зрения это не к ним.
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: Re: Интересное мнение про перспективы .NET
Если вы чего то не понимаете (как работает fork join pool), то может не стоит это валить на здоровую голову?reality wrote:Мне кажется куда печальнее попасть в компанию в которой все пихают в ForkJoin pool потому что он сам все локи уберет и сделать все супер быстрым. А оглянуться по сторонам и посмотреть а что ваще еще есть в мире той же JVM хотя бы и что народ и как делает как то не с руки. Я думаю что 95% процентов знающих про аппликативные функторы до этого удосужились прочитать хотя бы спеку java.util.concurrent и откровенную чушь и не перформящие решения видят за километр. Future.get() ни в каком пуле под нагрузкой никогда в жизни перформить не будет.crypto5 wrote:Мне кстати кажется после общения с комьюнити в последнее время что скала это как раз отличный признак компаний/проектов куда попадать не надо не в коем случае, там куча людей которые умеют хорошо "бла-бла-бла апликативные функторы", а вот код хороший писать и внятно и доходчиво обьяснять свою точку зрения это не к ним.
In vino Veritas!
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: Re: Интересное мнение про перспективы .NET
ОК. Но тогда я не понимаю, для чего асинхронное чтение нужно FJT засовывать и в чем будет польза? Для чтения уже есть неблокирующие I/O операции. Не вижу, чем может помочь, если вокруг них FJ слой накрутить.crypto5 wrote:Я не писал что FJ pool разрулит блокирующие операции к сети, подразумевалось что их действительно нужно интегрировать в fork join pool правильно, извини что ввел тебя в заблуждение.Интеррапт wrote:В том, что изначально ты говорил, что FJT разрулит блокирующие операции (в частности ожидание сети). А это совершенно не так. Ничего оно не разрулит, еще и перформанс для таких операций может быть хуже, чем с обычным пулом потоков.crypto5 wrote:В чем увертки, не обьяснишь?
Теперь оказывается туда нужно асинхронное чтение запихивать (т.е. ни о каком ожидании сети речь больше не идет). Но заворачивать асинхронное чтение в FJ task - это какая-то бесполезная операция (если не сказать больше), зачем это нужно? Собственно о чем и речь, что FJ хорош для CPU-bound задач, а никак не для I/O-bound.
-
- Уже с Приветом
- Posts: 256
- Joined: 14 Jul 2011 09:07
- Location: SaintP -> NYC
Re: Re: Интересное мнение про перспективы .NET
Да никто не говорит же что нельзя. Все можно. JVM одна на всех. Можно и ифами Case Class и Pattern Matching делать, байт код все равно один. Только это можно сделать легко и поддерживаемо а можно нет. Об это и речь. И с форк джойнами в джаве это будет не поддерживаемо. Если писать на Java то хотя бы взять RxJava для начала.crypto5 wrote: Отлично, так какая причина почему я не могу использовать такую же стратегию в моем fork join pool-e?
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: Re: Интересное мнение про перспективы .NET
Чт именно вас смущает? Да в пхп версии все тесты заинтегрировали в один файл, в джава в разные, вот вам джава версия с доступом к БД https://github.com/TechEmpower/Framewor ... oller.javastenking wrote:И вас даже не смущает что это один файл? Давайте я по шагам пройдусь.crypto5 wrote:По вашей же ссылке https://github.com/TechEmpower/Framewor ... /index.php начинается с $app->map('/json', function() {stenking wrote:Да? А покажите мне плиз где этот таинственный тест ?crypto5 wrote: Мы делаем вывод что вы сравниваете 2 разных теста, которых там аж 5-ять. В json ветке пхп кода никаких коннекшнов не создается, а возращается простой json kak и в джава коде.
https://github.com/TechEmpower/Framewor ... lcon-micro
1) $app = new Phalcon\Mvc\Micro() - всё нормально, загружаем фраимворк
2) $app['db'] = function() { ... } - полный капец. Коннектимся к базе.
3 ) $app['view'] = function() { .. } - ещё один капец . Загружаем и выполняем шаблонизатор который к тому же использует кеш на файловой системе ( io операции )
4 ) $app->map('/db') ..... добавляем дополнительные routes. Что бы эпп стал тяжелее и медленее. Как будто 2 и 3 было мало.
In vino Veritas!
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: Re: Интересное мнение про перспективы .NET
Тем что если нужно сложить два числа из разных ForkJoinTask то с FJ pool это можно легко сделать без нового заблокированного потока который будет ждать завершение первых двух.Интеррапт wrote:ОК. Но тогда я не понимаю, для чего асинхронное чтение нужно FJT засовывать и в чем будет польза? Для чтения уже есть неблокирующие I/O операции. Не вижу, чем может помочь, если вокруг них FJ слой накрутить.crypto5 wrote:Я не писал что FJ pool разрулит блокирующие операции к сети, подразумевалось что их действительно нужно интегрировать в fork join pool правильно, извини что ввел тебя в заблуждение.Интеррапт wrote:В том, что изначально ты говорил, что FJT разрулит блокирующие операции (в частности ожидание сети). А это совершенно не так. Ничего оно не разрулит, еще и перформанс для таких операций может быть хуже, чем с обычным пулом потоков.crypto5 wrote:В чем увертки, не обьяснишь?
Теперь оказывается туда нужно асинхронное чтение запихивать (т.е. ни о каком ожидании сети речь больше не идет). Но заворачивать асинхронное чтение в FJ task - это какая-то бесполезная операция (если не сказать больше), зачем это нужно? Собственно о чем и речь, что FJ хорош для CPU-bound задач, а никак не для I/O-bound.
In vino Veritas!
-
- Уже с Приветом
- Posts: 14407
- Joined: 26 May 2006 02:39
Re: Re: Интересное мнение про перспективы .NET
crypto5 wrote:Чт именно вас смущает? Да в пхп версии все тесты заинтегрировали в один файл, в джава в разные, вот вам джава версия с доступом к БД https://github.com/TechEmpower/Framewor ... oller.javastenking wrote:И вас даже не смущает что это один файл? Давайте я по шагам пройдусь.crypto5 wrote:По вашей же ссылке https://github.com/TechEmpower/Framewor ... /index.php начинается с $app->map('/json', function() {stenking wrote:Да? А покажите мне плиз где этот таинственный тест ?crypto5 wrote: Мы делаем вывод что вы сравниваете 2 разных теста, которых там аж 5-ять. В json ветке пхп кода никаких коннекшнов не создается, а возращается простой json kak и в джава коде.
https://github.com/TechEmpower/Framewor ... lcon-micro
1) $app = new Phalcon\Mvc\Micro() - всё нормально, загружаем фраимворк
2) $app['db'] = function() { ... } - полный капец. Коннектимся к базе.
3 ) $app['view'] = function() { .. } - ещё один капец . Загружаем и выполняем шаблонизатор который к тому же использует кеш на файловой системе ( io операции )
4 ) $app->map('/db') ..... добавляем дополнительные routes. Что бы эпп стал тяжелее и медленее. Как будто 2 и 3 было мало.
Меня смущает что вот такой тест будет наааамного быстрее )
Code: Select all
$app = new Phalcon\Mvc\Micro();
$app->map('/json', function() {
header("Content-Type: application/json");
echo json_encode(array('message' => 'Hello, World!'));
});
$app->handle();
Бога нет.
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: Re: Интересное мнение про перспективы .NET
Почему?stenking wrote:crypto5 wrote:Чт именно вас смущает? Да в пхп версии все тесты заинтегрировали в один файл, в джава в разные, вот вам джава версия с доступом к БД https://github.com/TechEmpower/Framewor ... oller.javastenking wrote:И вас даже не смущает что это один файл? Давайте я по шагам пройдусь.crypto5 wrote:По вашей же ссылке https://github.com/TechEmpower/Framewor ... /index.php начинается с $app->map('/json', function() {stenking wrote: Да? А покажите мне плиз где этот таинственный тест ?
https://github.com/TechEmpower/Framewor ... lcon-micro
1) $app = new Phalcon\Mvc\Micro() - всё нормально, загружаем фраимворк
2) $app['db'] = function() { ... } - полный капец. Коннектимся к базе.
3 ) $app['view'] = function() { .. } - ещё один капец . Загружаем и выполняем шаблонизатор который к тому же использует кеш на файловой системе ( io операции )
4 ) $app->map('/db') ..... добавляем дополнительные routes. Что бы эпп стал тяжелее и медленее. Как будто 2 и 3 было мало.
Меня смущает что вот такой тест будет наааамного быстрее )
Code: Select all
$app = new Phalcon\Mvc\Micro(); $app->map('/json', function() { header("Content-Type: application/json"); echo json_encode(array('message' => 'Hello, World!')); }); $app->handle();
In vino Veritas!
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: Re: Интересное мнение про перспективы .NET
Я уже неоднократно выслушал ваше мнение, и уже ответил что помоему вы не осилили как работает fork-join pool, пойдем еще по одной итерации?reality wrote:Да никто не говорит же что нельзя. Все можно. JVM одна на всех. Можно и ифами Case Class и Pattern Matching делать, байт код все равно один. Только это можно сделать легко и поддерживаемо а можно нет. Об это и речь. И с форк джойнами в джаве это будет не поддерживаемо. Если писать на Java то хотя бы взять RxJava для начала.crypto5 wrote: Отлично, так какая причина почему я не могу использовать такую же стратегию в моем fork join pool-e?
In vino Veritas!
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: Re: Интересное мнение про перспективы .NET
Ты сможешь показать (кодом, например), как это будет имплементировано на примере с ForkJoinTask с неблокирующим I/O чтением?crypto5 wrote: Тем что если нужно сложить два числа из разных ForkJoinTask то с FJ pool это можно легко сделать без нового заблокированного потока который будет ждать завершение первых двух.
-
- Уже с Приветом
- Posts: 314
- Joined: 24 May 2013 22:04
Re: Re: Интересное мнение про перспективы .NET
В этом случае жаба выглядит довольно элегантно.crypto5 wrote:Ну я вверху привел приблизительный код, вам точный привести? Думаю как то так:rorp wrote:А как сложить два инта из двух разных тасок и завернуть результат в третью?crypto5 wrote:Это обычный pool будет пухнуть, а фишка fork join-a что он будет работать так как я описал. Там правда нужно вместо Future получать ForkJoinTask из forkJoinPool.reality wrote:Точнее форк-джойн будет пухнуть до лимита потоков а потом встанет.
ForkJoinTask task = forkJoinPool.submit(() -> f1.get() + f2.get());
А что, если есть таска, которая выдает список интов и есть функция, которая берет инт и возвращает таску, в которой что-то с этим интом деалается (напиример, он возводтся в квадрат). Как при помощи этой функции сделать из таски списка интов таску списка квадратов?
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: Re: Интересное мнение про перспективы .NET
Мне нужно заимплементить ForkJoinTask для неблокирующего чтения или ты поверишь что это можно сделать?Интеррапт wrote:Ты сможешь показать (кодом, например), как это будет имплементировано на примере с ForkJoinTask с неблокирующим I/O чтением?crypto5 wrote: Тем что если нужно сложить два числа из разных ForkJoinTask то с FJ pool это можно легко сделать без нового заблокированного потока который будет ждать завершение первых двух.
In vino Veritas!
-
- Уже с Приветом
- Posts: 256
- Joined: 14 Jul 2011 09:07
- Location: SaintP -> NYC
Re: Re: Интересное мнение про перспективы .NET
Я вот не верю ForkJoinTask оно совсем для другого предназначена. И я не верю что ее можно сделать неблокирующей при чтении из NIO сокета к примеру. Может быть я конечно не догоняю как это делается, но вот читаю жавадок и вообще даже не знаю как подступиться.crypto5 wrote: Мне нужно заимплементить ForkJoinTask для неблокирующего чтения или ты поверишь что это можно сделать?
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: Re: Интересное мнение про перспективы .NET
Так думаю закомпоновать нельзя, кривой дизайн изначально, должен быть список тасков с интами а не таска с списком интов.rorp wrote:В этом случае жаба выглядит довольно элегантно.crypto5 wrote:Ну я вверху привел приблизительный код, вам точный привести? Думаю как то так:rorp wrote:А как сложить два инта из двух разных тасок и завернуть результат в третью?crypto5 wrote:Это обычный pool будет пухнуть, а фишка fork join-a что он будет работать так как я описал. Там правда нужно вместо Future получать ForkJoinTask из forkJoinPool.reality wrote:Точнее форк-джойн будет пухнуть до лимита потоков а потом встанет.
ForkJoinTask task = forkJoinPool.submit(() -> f1.get() + f2.get());
А что, если есть таска, которая выдает список интов и есть функция, которая берет инт и возвращает таску, в которой что-то с этим интом деалается (напиример, он возводтся в квадрат). Как при помощи этой функции сделать из таски списка интов таску списка квадратов?
In vino Veritas!
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: Re: Интересное мнение про перспективы .NET
Аналогично (ну т.е. я конечно Крипто верю, но для собственного самообразования ). Поэтому хотелось бы взглянуть на имплементацию, каким образом мы скоординируем NIO + ForkJoinTask (это ведь нам придется ждать результатов асинхронного чтения, а значит блокировать поток) и каким образом нам это сэкономит поток.reality wrote:Я вот не верю ForkJoinTask оно совсем для другого предназначена. И я не верю что ее можно сделать неблокирующей при чтении из NIO сокета к примеру. Может быть я конечно не догоняю как это делается, но вот читаю жавадок и вообще даже не знаю как подступиться.crypto5 wrote: Мне нужно заимплементить ForkJoinTask для неблокирующего чтения или ты поверишь что это можно сделать?
Вот хотелось бы, чтобы Крипто кодом показал, каким образом эта задача имеет смысл.
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: Re: Интересное мнение про перспективы .NET
Кто-то раньше жаловался что за тестовые задачи денег не платят ))Интеррапт wrote:Аналогично (ну т.е. я конечно Крипто верю, но для собственного самообразования ). Поэтому хотелось бы взглянуть на имплементацию, каким образом мы скоординируем NIO + ForkJoinTask (это ведь нам придется ждать результатов асинхронного чтения, а значит блокировать поток) и каким образом нам это сэкономит поток.reality wrote:Я вот не верю ForkJoinTask оно совсем для другого предназначена. И я не верю что ее можно сделать неблокирующей при чтении из NIO сокета к примеру. Может быть я конечно не догоняю как это делается, но вот читаю жавадок и вообще даже не знаю как подступиться.crypto5 wrote: Мне нужно заимплементить ForkJoinTask для неблокирующего чтения или ты поверишь что это можно сделать?
Вот хотелось бы, чтобы Крипто кодом показал, каким образом эта задача имеет смысл.
In vino Veritas!
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: Интересное мнение про перспективы .NET
Я даже ради интереса погуглил NIO и ForkJoinTask - глухо как в могиле, ничего даже близко подобного нет, а ведь казалось бы - это ведь должен быть прорыв в серверном перформансе.
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: Re: Интересное мнение про перспективы .NET
Ну нет так нет, я же не настаиваю, а просто спросил.crypto5 wrote:Кто-то раньше жаловался что за тестовые задачи денег не платят ))
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: Re: Интересное мнение про перспективы .NET
Идея вроде простая: делаем новую
class ReadFromNetworkForkJoinTask extends ForkJoinTask {
@override void exec() {
выzываем NIO с колбек, который вызовет this.complete(value);
}
}
Все.
class ReadFromNetworkForkJoinTask extends ForkJoinTask {
@override void exec() {
выzываем NIO с колбек, который вызовет this.complete(value);
}
}
Все.
In vino Veritas!
-
- Уже с Приветом
- Posts: 14407
- Joined: 26 May 2006 02:39
Re: Re: Интересное мнение про перспективы .NET
Потому что загрузка тяжёлых драйверов, подключение к базе и операции с файловой системой это действия сильно медленее простого перебора строчки.crypto5 wrote: Почему?
Бога нет.