Re[10]: Что посоветуете как аналог С++
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 19.06.13 20:40
Оценка:
Здравствуйте, MTD, Вы писали:

G>>Почти все десктопные приложения довольно древние, разработаны в году 2005 и ранее.

G>>А вот приложения для w8 по большей части .NET (WinRT) и JavaScript.

MTD>Ну раз так, то уверен, будет не сложно назвать хотя бы десяток популярных десктопных приложений на .Net? Прошу.


Открой магазин W8 да посмотри сам
Re[10]: Что посоветуете как аналог С++
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 19.06.13 20:48
Оценка:
Здравствуйте, MTD, Вы писали:

G>>А вот для энергопотребления и perceived performance нужно правильно делать ожидания, а не быстрые вычисления, что на C++ непросто.


MTD>Это ты о чем вообще? Сказать ОС, что не будить процесс до наступления некоего события одной функцией это сложность?


Как винда тормозит, так виноваты руки, а как менеджед приложение тормозит, так виноват дотнет.

Похоже какие то слишком двойные стандарты.
Re[11]: Что посоветуете как аналог С++
От: MTD https://github.com/mtrempoltsev
Дата: 19.06.13 21:08
Оценка:
Здравствуйте, Ikemefula, Вы писали:

MTD>>Ну раз так, то уверен, будет не сложно назвать хотя бы десяток популярных десктопных приложений на .Net? Прошу.


I>Открой магазин W8 да посмотри сам


Я не знаю, что это. Так будут оглашены названия хотя бы десятка популярных десктопных приложений на .Net? Прошу.
Re[11]: Что посоветуете как аналог С++
От: MTD https://github.com/mtrempoltsev
Дата: 19.06.13 21:10
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Здравствуйте, MTD, Вы писали:


G>>>А вот для энергопотребления и perceived performance нужно правильно делать ожидания, а не быстрые вычисления, что на C++ непросто.


MTD>>Это ты о чем вообще? Сказать ОС, что не будить процесс до наступления некоего события одной функцией это сложность?


I>Как винда тормозит, так виноваты руки, а как менеджед приложение тормозит, так виноват дотнет.


I>Похоже какие то слишком двойные стандарты.


Это твое изречение оно вообще к чему?
Re[13]: Что посоветуете как аналог С++
От: Evgeny.Panasyuk Россия  
Дата: 19.06.13 21:21
Оценка: +1
Здравствуйте, Ikemefula, Вы писали:

EP>>В большинстве же приложений — это то, во что упирается производительность. А это не только скорость, но и энергоэффективность, и цена железа.

I>Большинство оно сильно разное. И если уж совсем про большинство говорить, то проблемы точно не с производительность.

А я не спорю что высокая производительность не везде нужна.

EP>>Как пример — эти аллокации вылезают по всему коду, при простейших абстракциях — просадка 16x на ровном месте.

I>Такой код в своём уме никто не пишет, кроме вчерашних плюсовиков, которые не знают как устроена память.

Talk is cheap, show me the code.

EP>>Также аллокации ухудшают локальность, что является дополнительной проблемой.

EP>>Чтобы бороться с ними, нужно от многого отказываться и работать против языка — этим редко кто занимается, ибо проще взять более подходящий инструмент.
I>С такими проблемами как ты показал, не надо бороться против языка, наоборот, его надо интенсивно использовать.

Ну так вперёд, модифицируй код выше

EP>>

EP>>Alexander Stepanov:
EP>>For many years, I tried to achieve relative efficiency in more advanced languages (e.g., Ada and Scheme) but failed. My generic versions of even simple algorithms were not able to compete with built-in primitives. But in C++ I was finally able to not only accomplish relative efficiency but come very close to the more ambitious goal of absolute efficiency. To verify this, I spent countless hours looking at the assembly code generated by different compilers on different architectures.

EP>>

I>Это ни о чем.


Это мнение человека который разрабатывал алгоритмические библиотеки для Scheme, Ada, Java, C++

I>Если производительность понимать исключительно как такты процессора, то еще можно чего то выдумывать.

I>А если скажем сюда внести работу с диском, базой или сетью, все поворачивается ровно наоборот — С++ не в состоянии обеспечить перформанс, например потому что тяжело контролировать асинхронные операции. Всё, до свидания.

stackless coroutines, stackfull coroutines, state machine, лямбды в конце концов

I>>>Почему то самые критичные куски кода пишутся практически на С или подобным образом.

EP>>Это распространённый миф
I>Это факты.

Покажи где например здесь "практически на С или подобным образом"?

I>>>Это все басни.

EP>>Это реальный опыт крупного проекта
I>Это частный случай. Почему то плюсовики имеют обыкновение яростно отрицать опыт других проектов

В этой ветке я вижу только твоё отрицание опыта FaceBook, другие проекты тут не упоминались
Re[19]: Что посоветуете как аналог С++
От: Evgeny.Panasyuk Россия  
Дата: 19.06.13 21:30
Оценка:
Здравствуйте, Ikemefula, Вы писали:

EP>>shared_ptr хоть и полезен, но сильно overused.

EP>>Многие его используют абсолютно ни к месту — где достаточно unique_ptr, а где-то вообще никакой smart pointer не нужен.
I>Опаньки, что же выходит, сурьёзные сиплюсники оказывается не умеют указатели использовать ?

Неправильно, нормальные C++ программисты умеют их не использовать.

I>Помнится это именно ты год назад доказывал мне, что все ровно наоборот — сиплюсники чуть не поголовно используют указатели самым правильным образом.


Ты что-то путаешь — таких заявлений я не делал.
Re[14]: Что посоветуете как аналог С++
От: Cyberax Марс  
Дата: 19.06.13 21:42
Оценка:
Здравствуйте, kaa.python, Вы писали:

C>>Пробовали, для сетей это не имеет большого смысла. Сейчас основной пользователь AIO — это базы данных, которые хотят делать кучу операций с дисковыми массивами.

KP>Вообще-то, смысл есть, в случае написания сервера, как минимум. С учетом того, что ты писал клиента, особого смысла в использовании асинхронного IO нет, тут я согласен.
По факту — не особо. Сетевой стек достаточно сложен, так что простое копирование в результирующий буфер не составляет заметной задержки. По количеству системных вызовов, возможно, есть небольшая разница, но они в Линуксе дешёвые.

Сейчас высокоскоростные трейдеры пилят в Линуксе прямую доставку пакетов от карты через DMA-BUF инфраструктуру, но там всё получается слишком хардкорно. Для обычных серверов это не имеет смысла совершенно.
Sapienti sat!
Re[12]: Что посоветуете как аналог С++
От: fddima  
Дата: 19.06.13 21:54
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Ну да — именно поэтому разработчики оптимизаторов пыхтят например над escape analysis

EP>Как пример — эти аллокации вылезают по всему коду, при простейших абстракциях — просадка 16x на ровном месте.
Я не знаю, что там насчет escape analysis, но с явой — это явный косяк JVM (а точнее говоря её ущербность).
В Java нет нормальных value-типов, как в дотнете и других управляемых средах ещё ничего не говорит. Point2/3 делать классом... ну — такого я ещё нигде не видел. Делаем Point2 "структурой" — и разницы никакой нет.
А с объектами и C++ будет всё тоже самое (куча аллокаций на куче это всегда дорого в той или иной степени).

1 plain_array elapsed = 0,067025        // C# int
0 structured_array elapsed = 1,683958   // C# class
1 struct_array  elapsed = 0,0636559     // C# struct


  Скрытый текст
namespace ConsoleApplication1
{
    using System;
    using System.Collections.Generic;
    using System.Diagnostics;
    using System.Linq;
    using System.Text;

    class Point2D
    {
        public int x, y;
    }

    struct Point2
    {
        public Point2(int x, int y)
        {
            this.x = x;
            this.y = y;
        }

        public int x, y;
    }

    public class Program
    {
        public static void Main(string[] args)
        {
            {
                var sw = Stopwatch.StartNew();
                int[] v = new int[1 << 24];
                for (int i = 0; i != v.Length; ++i)
                    v[i] = 1;
                sw.Stop();
                Console.WriteLine(v[200] + " plain_array elapsed = " + sw.Elapsed.TotalSeconds);
            }
            {
                var sw = Stopwatch.StartNew();
                Point2D[] v = new Point2D[1 << 23];
                for (int i = 0; i != v.Length; ++i)
                    v[i] = new Point2D();
                sw.Stop();
                Console.WriteLine(v[100].x + " structured_array elapsed = " + sw.Elapsed.TotalSeconds);
            }
            {
                var sw = Stopwatch.StartNew();
                Point2[] v = new Point2[1 << 23];
                for (int i = 0; i != v.Length; ++i)
                    v[i] = new Point2(1, 2);
                sw.Stop();
                Console.WriteLine(v[100].x + " struct_array  elapsed = " + sw.Elapsed.TotalSeconds);
            }
        }
    }
}
Re[13]: Что посоветуете как аналог С++
От: Evgeny.Panasyuk Россия  
Дата: 19.06.13 22:13
Оценка:
Здравствуйте, fddima, Вы писали:

EP>>Ну да — именно поэтому разработчики оптимизаторов пыхтят например над escape analysis

EP>>Как пример — эти аллокации вылезают по всему коду, при простейших абстракциях — просадка 16x на ровном месте.
F> Я не знаю, что там насчет escape analysis, но с явой — это явный косяк JVM (а точнее говоря её ущербность).
F> В Java нет нормальных value-типов,

Ну Ikemefula грозится "интенсивно заиспользовать язык"

F>как в дотнете и других управляемых средах ещё ничего не говорит.


Java один из самых ярких представителей.

F>Point2/3 делать классом... ну — такого я ещё нигде не видел.


В Java только классы — это пример применения маленькой абстракции в одной из самых распространённых управляемых сред

F>Делаем Point2 "структурой" — и разницы никакой нет.


C#-вые структуры — это всё равно определённые ограничения, и уж точно не дефолт в управляемых средах.

F>А с объектами и C++ будет всё тоже самое (куча аллокаций на куче это всегда дорого в той или иной степени).


Не будет, в C++ и классы и структуры это одно и тоже (за исключением дефолтного доступа членов и родителей) — причём default это value-semantics. Чтобы появились аллокации там нужно делать дополнительные движения.
Re[16]: Что посоветуете как аналог С++
От: IT Россия linq2db.com
Дата: 20.06.13 02:25
Оценка:
Здравствуйте, Mazay, Вы писали:

IT>>Это хорошо. А второй, который shared?

M>shared медленнее голых указателей при копировании, ибо счётчик ссылок по указателю плюс сам указатель на счётчик ссылок. Но необходимое число копирований обычное не велико.

Это не тот ли самый случай из-за чего старый VB тормозил на операциях с памяться раз так в 200?
... << RSDN@Home 1.2.0 alpha 5 rev. 69>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[12]: Что посоветуете как аналог С++
От: IT Россия linq2db.com
Дата: 20.06.13 02:25
Оценка:
Здравствуйте, MTD, Вы писали:

KP>>>Ну разве что только те, кто так и не открыл для себя shared_ptr и unique_ptr

IT>>И сколько ещё всяких разных подпорок и затычек нужно для себя открыть?
MTD>Почему ты называешь часть языка подпорками? А цикл for — подпорка, а if?

С каких пор обёртки для указателей стали частью языка?
... << RSDN@Home 1.2.0 alpha 5 rev. 69>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[13]: Что посоветуете как аналог С++
От: MTD https://github.com/mtrempoltsev
Дата: 20.06.13 03:40
Оценка: +2
Здравствуйте, IT, Вы писали:

IT>С каких пор обёртки для указателей стали частью языка?


С тех самых, как их в стандарте описали.
Re[17]: Что посоветуете как аналог С++
От: Mazay Россия  
Дата: 20.06.13 03:48
Оценка: +2
Здравствуйте, IT, Вы писали:

IT>>>Это хорошо. А второй, который shared?

M>>shared медленнее голых указателей при копировании, ибо счётчик ссылок по указателю плюс сам указатель на счётчик ссылок. Но необходимое число копирований обычное не велико.

IT>Это не тот ли самый случай из-за чего старый VB тормозил на операциях с памяться раз так в 200?


Я на VB почти не писал. Может в VB просто других указателей не было? В теории shared_ptr должен использоваться только тогда, когда у объекта больше одного владельца. Надо сильно постараться, чтобы копирований таких указателе было много, и это сколь-нибудь значимо влияло на производительность.

Я лично, каюсь, частенько использую shared_ptr там где они не нужны. При быстром написании кода, когда нужно по-быстрому сваять прототип, проверить идею, shared_ptr позволяет не задумываться о владении объектом больше чем на полсекунды: есть сомнения — используем shared_ptr. Иногда это приводит к утечкам памяти на циклических ссылках, но для прототипа это не критично. Если прототип работает — начинаю убирать shared_ptr, приводить архитектуру в порядок и т.д. Так чему это я? А к тому, что у меня ни разу не было существенного прироста производительности при замене shared_ptr на ссылки или unique_ptr. Можно, конечно, сваять пример, где это будет существенно, но это надо постараться.
Главное гармония ...
Re[20]: Что посоветуете как аналог С++
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 20.06.13 05:02
Оценка: -1 :)
Здравствуйте, Evgeny.Panasyuk, Вы писали:

I>>Опаньки, что же выходит, сурьёзные сиплюсники оказывается не умеют указатели использовать ?


EP>Неправильно, нормальные C++ программисты умеют их не использовать.


Шота из кода это никак не следует

I>>Помнится это именно ты год назад доказывал мне, что все ровно наоборот — сиплюсники чуть не поголовно используют указатели самым правильным образом.


EP>Ты что-то путаешь — таких заявлений я не делал.


Может и не ты, но тем не менее эта тема поднимается в КСВ достаточно регулярно и со слов сиплюсников все шоколадно — и с указателями, и с исключениями и тд и тд. А на деле как то все тухловато.
Re[14]: Что посоветуете как аналог С++
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 20.06.13 05:21
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>>>В большинстве же приложений — это то, во что упирается производительность. А это не только скорость, но и энергоэффективность, и цена железа.

I>>Большинство оно сильно разное. И если уж совсем про большинство говорить, то проблемы точно не с производительность.

EP>А я не спорю что высокая производительность не везде нужна.


Ну вот видишь.

EP>>>Как пример — эти аллокации вылезают по всему коду, при простейших абстракциях — просадка 16x на ровном месте.

I>>Такой код в своём уме никто не пишет, кроме вчерашних плюсовиков, которые не знают как устроена память.

EP>Talk is cheap, show me the code.


А задача какая, выделить массив в сто тыщ мульёнов и пройтись по ём в цикле ?

EP>>>Чтобы бороться с ними, нужно от многого отказываться и работать против языка — этим редко кто занимается, ибо проще взять более подходящий инструмент.

I>>С такими проблемами как ты показал, не надо бороться против языка, наоборот, его надо интенсивно использовать.

EP>Ну так вперёд, модифицируй код выше


Я не умею оптимизировать код, задача и цель которого не ясна.

I>>Это ни о чем.


EP>Это мнение человека который разрабатывал алгоритмические библиотеки для Scheme, Ada, Java, C++


Это уже устаревший подход.

I>>Если производительность понимать исключительно как такты процессора, то еще можно чего то выдумывать.

I>>А если скажем сюда внести работу с диском, базой или сетью, все поворачивается ровно наоборот — С++ не в состоянии обеспечить перформанс, например потому что тяжело контролировать асинхронные операции. Всё, до свидания.

EP>stackless coroutines, stackfull coroutines, state machine, лямбды в конце концов


И ничего из этого в сиплюсплюсе нет, а лямбды сильно кастрированые что бы их называть таким словом.

EP>Покажи где например здесь "практически на С или подобным образом"?


Вот сюда смотри
https://code.google.com/p/sphinxsearch/source/browse/

Как думаешь, нужен ли здесь перформанс ?


I>>Это частный случай. Почему то плюсовики имеют обыкновение яростно отрицать опыт других проектов


EP>В этой ветке я вижу только твоё отрицание опыта FaceBook, другие проекты тут не упоминались


Ну да, это ж я рассказываю как кругом всё шоколадно.
Re[12]: Что посоветуете как аналог С++
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 20.06.13 05:27
Оценка:
Здравствуйте, MTD, Вы писали:

G>>>>А вот для энергопотребления и perceived performance нужно правильно делать ожидания, а не быстрые вычисления, что на C++ непросто.


MTD>>>Это ты о чем вообще? Сказать ОС, что не будить процесс до наступления некоего события одной функцией это сложность?


I>>Как винда тормозит, так виноваты руки, а как менеджед приложение тормозит, так виноват дотнет.


I>>Похоже какие то слишком двойные стандарты.


MTD>Это твое изречение оно вообще к чему?


"для энергопотребления и perceived performance нужно правильно делать ожидания, а не быстрые вычисления, что на C++ непросто"

Сюда можно добавить работу с диском, устройствами, сетью, базой данных и тд.

Вопросы перформанса уже давно стали большим, чем подсчет тактов процессора.

И как то глядя на винду с лялихом, совершенно не очевидно, что "не будить процесс" это легко. В общем случае надо организовать корректную схему многопоточного взаимодействия, асинхронщину всякую. Вот это на с++ крайне сложно.
Re[12]: Что посоветуете как аналог С++
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 20.06.13 05:33
Оценка:
Здравствуйте, MTD, Вы писали:

I>>Открой магазин W8 да посмотри сам


MTD>Я не знаю, что это. Так будут оглашены названия хотя бы десятка популярных десктопных приложений на .Net? Прошу.


Ты получил внятный ответ — популярные десктоп приложения были написаны еще задолго до 2005го года. Дотнет на тот момент, если не понятно,еще пешком под стол ходил.
Re[13]: Что посоветуете как аналог С++
От: MTD https://github.com/mtrempoltsev
Дата: 20.06.13 06:09
Оценка:
Здравствуйте, Ikemefula, Вы писали:

MTD>>Я не знаю, что это. Так будут оглашены названия хотя бы десятка популярных десктопных приложений на .Net? Прошу.


I>Ты получил внятный ответ — популярные десктоп приложения были написаны еще задолго до 2005го года. Дотнет на тот момент, если не понятно,еще пешком под стол ходил.


Стало быть их нет? C 2002 года, за 11 лет, всего одно приложение — Paint.NET? В тоже время сколько новых популярных приложений на умирающих плюсах появилось?
Re[13]: Что посоветуете как аналог С++
От: MTD https://github.com/mtrempoltsev
Дата: 20.06.13 06:12
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>"для энергопотребления и perceived performance нужно правильно делать ожидания, а не быстрые вычисления, что на C++ непросто"


I>Сюда можно добавить работу с диском, устройствами, сетью, базой данных и тд.


I>Вопросы перформанса уже давно стали большим, чем подсчет тактов процессора.


Опять бла-бла-бла. Ну и в чем конкретно в данных случаях преимущество перед плюсами? Или .Net чтобы данные прочитать диск не раскручивает, а из астрала их берет?

I>И как то глядя на винду с лялихом, совершенно не очевидно, что "не будить процесс" это легко.


Нет, это очень легко. Сам можешь посмотреть.

I>В общем случае надо организовать корректную схему многопоточного взаимодействия, асинхронщину всякую. Вот это на с++ крайне сложно.


Не сложней, чем на Java, например.
Re[6]: Что посоветуете как аналог С++
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 20.06.13 06:22
Оценка:
Здравствуйте, roro, Вы писали:

R>Вы меня заинтриговали.

R>Поставил себе GPS2013, примеры в нем какие-то странные. demo/matrix_handling строки матрицы выделяет на куче, причем каждую строку по отдельности через calloc, и все это происходит в файле matrix.c

R>Где бы посмотреть эталонные реализации matrix-vector, KD-tree, ray-intersection, желательно чистые без c/c++ ?


Тут можно глянуть: RTS. В частности, с кучей работают System.Pool_Local, GNAT.Dynamic_Tables.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.