Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пост превосходства современных ЯП, над олдскульными 
:(
    Опции темы
Lazin
Дата 14.12.2009, 11:52 (ссылка) |    (голосов:10) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Я считаю, что такие языки программирования, как C++ и Delphi - свое отживают, причина их широкого использования - инерция и большое количество унаследованного кода. Конечно, для системных приложений можно и нужно использовать что-то близкое к железу. Но вот для большинства задач это overkill, сейчас никто не пишет GUI приложения на asm-е, а ведь раньше писали. Ну вот лет через 5, никто не будет писать GUI приложения на таких ЯП, как Си, С++, Delphi. Вместо этого, будущие mainstream приложения будут компилироваться в байт-код какой-нибудь VM. Вот так-то! smile 
заметьте, я не говорю о таких областях как численные методы, системный софт и тд, тоесть о тех областях, где нужен минимальный memory footprint, либо очень высокая производительность
Но в ответ на это, я всегда слышу одно и то-же, мол все будет тормозить, а С++ это "крута", "патамушта" работает быстро. Хахаха!!! smile
BITCHES DON'T KNOW BOUT MY OPTIMIZATION SKILLS
Конечно, компилятор С++ создает более эффективный, нативный код, но тут есть один момент - средний программист просто не умеет писать эффективный код, не понимает как работает железо и тд. Что-бы начать писать приличный плюсовый код, нужно два-три года практики. Что-бы понимать как ваш код работает, нужно намного больше чем просто знание языка. Далеко не все читали What Every Programmer Should Know About Memory. Иногда складывается впечатление, что многие разработчики вообще живут в начале 90х годов и пишут программы, которые должны работать на Pentium PRO с 64х RAM. Я вообще считаю, что делать какие-либо предположения о скорости работы того или иного участка кода до его запуска под профайлером - гадание на кофейной гуще. smile 
С другой стороны, современные ВМ не требуют от разработчика понимания того, как работает железо, позволяя при этом создавать приложения, имеющие приличную производительность. Код на таких языках как java, c#, scala, etc, намного проще, следовательно в нем проще разобраться, следовательно, в нем проще найти узкие места и оптимизировать.

В общем, я предлагаю такой challenge - выбираем задачу, но только не синтетическую, а достаточно близкую к жизни, вы пишете реализацию на своем "быстром" %favorite language%, а потом я пишу то-же самое на "тормзном" C# или Java, или еще чем-нибудь. Моя реализация отстает по скорости не более чем на 25%, а скорее всего рвет вашу как тузик тряпку xD. Ну и естественно, приложение должно полностью утилизировать современные многоядерные процессоры, а куда без этого?

итак, кто в деле? smile
PM MAIL Skype GTalk   Вверх
MAKCim
Дата 14.12.2009, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Lazin
+1
идеальный вариант - С + что-то высокоуровневое типа Python



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Cheloveck
Дата 14.12.2009, 13:30 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: нет
Всего: 32



Я подпишусь на тему, но придерживаюсь мнения Lazinа. Страуструп писал ещё, что высокоуровневые части приложений должны буть написаны на языках высокого уровня, хотя, в момент сборки, могут генерировать код на C++ или C (что нам демонстрирует Qt).


--------------------
user posted image
PM Jabber   Вверх
Vasay
Дата 14.12.2009, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 2
Всего: 73



Lazin,  


Считаю, что серьезным минусом компилируемых в прцессорный код ЯП является их зависимость от конкретного набора инструкций. Что сильно тормозит развитие процессорной индустрии (облом с переходом на IA64, куча костылей для поддержки х86 в AMD64).

Будущее за платформами типа .net и Java.

А на счет скорости, слышал про такие вещи (не знаю насколько правда - не проверял  smile  ):

Реализация интерпретатора Ruby  реализованная на Java ( JRuby ) быстрее родного интерпретатора на Си.
Интерпретатор php реализованный на Java в 4 раза быстрее mod_php (по заверениям производителей  smile http://caucho.com/resin/doc/quercus.xtp )
 


Это сообщение отредактировал(а) Vasay - 14.12.2009, 13:44


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Lazin
Дата 14.12.2009, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Vasay, лично для меня важнее даже не это, а модульность, настоящая, а не на уровне языка. К примеру, в компилируемой в нативный код программе можно использовать различные библиотеки, компоненты, каждый из которых может испортить стек или кучу. При этом упадет все приложение и не всегда бывает понятно, что и где сломалось на самом деле. Другая сторона медали - ты пишешь библиотеку, которая используется многими клиентами. И в один "прекрасный" момент получаешь crash dump приложения, с ошибкой доступа внутри твоего кода, который просто не может поломаться. И после нескольких часов/дней отладки и многих попыток воспроизвести ситуацию, оказывается что приложение просто портило память, используемую твоей библиотекой.

Цитата(MAKCim @  14.12.2009,  13:19 Найти цитируемый пост)
+1


Цитата(Cheloveck @  14.12.2009,  13:30 Найти цитируемый пост)
Я подпишусь на тему, но придерживаюсь мнения Lazinа. Страуструп писал ещё, что высокоуровневые части приложений должны буть написаны на языках высокого уровня, хотя, в момент сборки, могут генерировать код на C++ или C (что нам демонстрирует Qt). 


ну так совсем не интересно, а где-же оппоненты? с кем холиварить????
PM MAIL Skype GTalk   Вверх
UniBomb
Дата 14.12.2009, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 97



Цитата(Lazin @  14.12.2009,  14:58 Найти цитируемый пост)
ну так совсем не интересно, а где-же оппоненты? с кем холиварить????

С моей невысокой колокольни вообще не видно предмета спора  smile  Демагогия о доминировании одного языка над другим присущ в основном делфятникам  smile  Если честно, то серьёзных споров о том, "что лучше" я уже давно не видел. С другой стороны встаёт немного другой вопрос - "зачем мне ява, если те же задачи я могу решить на С++?". Есть ещё и третья - "компилируемые языки скоро вымрут, бугага!". С этим тоже не стоит спорить, ибо если и вымрут, то не во всех областях:

Цитата(Lazin @  14.12.2009,  12:52 Найти цитируемый пост)
таких областях как численные методы, системный софт и тд, тоесть о тех областях, где нужен минимальный memory footprint, либо очень высокая производительность


В общем кто как хочет, тот сами знаете что  smile 


--------------------
PM MAIL ICQ Skype   Вверх
kemiisto
  Дата 14.12.2009, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 3
Всего: 160



Цитата(Lazin @  14.12.2009,  12:52 Найти цитируемый пост)
Вместо этого, будущие mainstream приложения будут компилироваться в байт-код какой-нибудь VM.

LLVM? Что ТС думает по этому поводу? 

Цитата(MAKCim @  14.12.2009,  14:19 Найти цитируемый пост)
идеальный вариант - С + что-то высокоуровневое типа Python

Не, не. Низкоуровневый язык - всё что угодно, только не С (в мечтах Oberon, в суровой реальности тот же Go подойдёт). Выше - всё, что угодно только не Python. smile Шлак.

Цитата(Lazin @  14.12.2009,  14:58 Найти цитируемый пост)
Vasay, лично для меня важнее даже не это, а модульность, настоящая, а не на уровне языка.

И где ты эту модульность увидел? smile 

Цитата(Cheloveck @  14.12.2009,  14:30 Найти цитируемый пост)
Страуструп писал

Ага, ещё Сталин писал...

Цитата(Cheloveck @  14.12.2009,  14:30 Найти цитируемый пост)
что нам демонстрирует Qt

В каком месте? smile 

А вообще, да, как перейдём на новый движок, надо всеми силами плюсистов отдельно оставить на старом. smile 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
djamshud
Дата 14.12.2009, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 1
Всего: 39



По-моему Lazin сегодня исполняет обязанности Капитана. А с Капитаном не поспоришь:).

Все в большей мере зависит от мастерства программиста, а не от того, на чем он пишет. И на асме нынче почти не пишут не только из-за его раздутости и платформозависимости, но и потому, что написать ассемблерый код оптимальнее того, что выдает компилятор (естественно с оптимизациями: аппаратными и логическими), под силу далеко не каждому.

>Не, не. Низкоуровневый язык - всё что угодно, только не С (в мечтах Oberon, в суровой реальности тот же Go подойдёт).

C не нравится в качестве низкоуровнего? Go низкоуровневый? Черт, куда же катится этот мир.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Cheloveck
Дата 14.12.2009, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: нет
Всего: 32



Цитата(kemiisto @  14.12.2009,  22:05 Найти цитируемый пост)
В каком месте? smile 

Код

<ui version="4.0" >
 <author></author>
 <comment></comment>
 <exportmacro></exportmacro>
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow" >
  <property name="geometry" >
   <rect>
    <x>0</x>
    <y>0</y>
    <width>800</width>
    <height>600</height>
   </rect>
  </property>
  <property name="windowTitle" >
   <string>MainWindow</string>
  </property>
  <widget class="QMenuBar" name="menubar" />
  <widget class="QWidget" name="centralwidget" />
  <widget class="QStatusBar" name="statusbar" />
 </widget>
 <pixmapfunction></pixmapfunction>
 <connections/>
</ui>

В этом, например


--------------------
user posted image
PM Jabber   Вверх
A5uKa
Дата 14.12.2009, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 1
Всего: 16



Код

#include <iostream>
using std::cout;
int main()
{
long res = 0;
for (int x = 0; x < 20000; x++)
    {
        for (int y = 0; y < 200000; y++) res += (y + x);
    }
 cout << res;
 return 0;
}

у меня спортивный интерес 

п.с. 
Цитата

достаточно близкую к жизни

трудно ... может потом придумаю  smile 

Думаю, что раньше люди спорили о месте на жёстком диске, теперь о каких-то долях секунд (http://www.csharphelp.com/archives2/archive458.html) лучше бы думать о возможностях писать "лёгкий" код, ведь я на 100% знаю, что мой нормальный проект в 6000 строк в главном файле может работать быстрее. Создать проект, который будет тормозить на среднестатистическом компьютере не так просто сейчас, если конечно не делать вон тот код сверху тысячу раз.

Это сообщение отредактировал(а) A5uKa - 14.12.2009, 22:29
PM   Вверх
Lazin
Дата 14.12.2009, 22:34 (ссылка) |  (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Цитата(kemiisto @  14.12.2009,  21:05 Найти цитируемый пост)
И где ты эту модульность увидел? 

в моем понимании, модульность невозможна в том, случае, если разные компонетны/модули могут в сумме давать неработающую программу

Цитата(kemiisto @  14.12.2009,  21:05 Найти цитируемый пост)
LLVM?

LLVM

Цитата(kemiisto @  14.12.2009,  21:05 Найти цитируемый пост)
в мечтах Oberon, в суровой реальности тот же Go подойдёт

все что угодно, только не Oberon smile

Цитата(djamshud @  14.12.2009,  21:32 Найти цитируемый пост)
По-моему Lazin сегодня исполняет обязанности Капитана. А с Капитаном не поспоришьsmile.
это был крик души smile
PM MAIL Skype GTalk   Вверх
Oxy
Дата 15.12.2009, 00:09 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 70
Регистрация: 20.9.2009

Репутация: 1
Всего: 1



Цитата(A5uKa @  14.12.2009,  22:17 Найти цитируемый пост)

Код

#include <iostream>
using std::cout;
int main()
{
long res = 0;
for (int x = 0; x < 20000; x++)
    {
        for (int y = 0; y < 200000; y++) res += (y + x);
    }
 cout << res;
 return 0;
}


у меня спортивный интерес 


Код

using System;
using System.Text;

namespace Exemple
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(439996000000000);
        }
    }
}



Цитата(Lazin @  14.12.2009,  11:52 Найти цитируемый пост)
а скорее всего рвет вашу как тузик тряпку xD

 smile 


Это сообщение отредактировал(а) Oxy - 15.12.2009, 00:10
PM MAIL WWW   Вверх
kemiisto
Дата 15.12.2009, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 3
Всего: 160



 smile 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
A5uKa
Дата 15.12.2009, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 1
Всего: 16



Цитата(Oxy @ 15.12.2009,  00:09)
namespace Exemple

всё же число ты как-то узнал.
Думаю время на это затратил не меньше.
А код можно было вообще не писать.
PM   Вверх
Oxy
Дата 15.12.2009, 00:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 70
Регистрация: 20.9.2009

Репутация: 1
Всего: 1



Цитата(A5uKa @  15.12.2009,  00:38 Найти цитируемый пост)

всё же число ты как-то узнал.
Думаю время на это затратил не меньше.

мы же не пишем программы чтобы запускать их один раз smile 

если на коком-то языке можно написать достаточно быстрые программы, это ещё ничего не означает smile 

Это сообщение отредактировал(а) Oxy - 15.12.2009, 00:51
PM MAIL WWW   Вверх
Shaggie
Дата 15.12.2009, 07:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: нет
Всего: 72



Цитата(kemiisto @  14.12.2009,  21:05 Найти цитируемый пост)
Низкоуровневый язык - всё что угодно, только не С (в мечтах Oberon, в суровой реальности тот же Go подойдёт). Выше - всё, что угодно только не Python.

Право же вам, батенька, не угодишь.

Цитата(kemiisto @  14.12.2009,  21:05 Найти цитируемый пост)
в суровой реальности тот же Go подойдёт

В суровой реальности Go разве что для серверных приложений подойдёт. Есть твёрдая уверенность, что его низкоуровневые C-like плюшки будут масштабироваться не хуже джавских/питоновских и давать в выхлопе заметное преимущество?
А в моей "комфортной" embedded реальности заявленная производительность в 5-10% от сишной не оставляет Go никаких шансов.


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
serger
Дата 15.12.2009, 08:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 19.6.2007
Где: Ижевск

Репутация: 0
Всего: 5



Цитата(Shaggie @  15.12.2009,  07:48 Найти цитируемый пост)
В суровой реальности Go разве что для серверных приложений подойдёт. Есть твёрдая уверенность, что его низкоуровневые C-like плюшки будут масштабироваться не хуже джавских/питоновских и давать в выхлопе заметное преимущество?

Какое преимущество?



--------------------
упс!
PM MAIL WWW Skype GTalk Jabber   Вверх
Shaggie
Дата 15.12.2009, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: нет
Всего: 72



Цитата(serger @  15.12.2009,  08:33 Найти цитируемый пост)
Какое преимущество?

Дык этим и интересуюсь. Например, по 1) скорости работы, 2) потребляемой памяти, 3) вышеупомянутой масштабируемости, 4) простоте и скорости создания приложения.

Напомню, что в язык зашита сборка мусора, инфраструктура на данный момент отсутствует at all, а сам язык ещё развивается, что не способствует созданию на нём промышленного кода.


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
unicuum
  Дата 15.12.2009, 09:46 (ссылка)   | (голосов:8) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 16.3.2005
Где: Рашка

Репутация: 1
Всего: 8



Цитата(Lazin @  14.12.2009,  22:34 Найти цитируемый пост)
это был крик души smile 

У тебя её нет.  smile 


--------------------
user posted image
обычный день на винграде
PM   Вверх
Lazin
Дата 15.12.2009, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Цитата(unicuum @  15.12.2009,  09:46 Найти цитируемый пост)
У тебя её нет

зато у меня есть ЧЮ, а у тебя его как видно нет smile 
PM MAIL Skype GTalk   Вверх
unicuum
  Дата 15.12.2009, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 16.3.2005
Где: Рашка

Репутация: 1
Всего: 8



Цитата(Lazin @  15.12.2009,  10:01 Найти цитируемый пост)
зато у меня есть ЧЮ, а у тебя его как видно нет  smile 

Что ж поделать, тот кто начал программировать на C++ лишается души и ЧЮ. Остаётся лишь всепоглощающее сумасшествие. smile 


--------------------
user posted image
обычный день на винграде
PM   Вверх
djamshud
Дата 15.12.2009, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 1
Всего: 39



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

Это сообщение отредактировал(а) djamshud - 15.12.2009, 10:52


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
unicuum
  Дата 15.12.2009, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 16.3.2005
Где: Рашка

Репутация: 1
Всего: 8



Цитата(djamshud @  15.12.2009,  10:52 Найти цитируемый пост)
ы, если будете меряться пиписьками, не забудьте считать не только время выполнения, но и сожранные ресурсы. Потому что если программа на яве проиграет всего секунду, но сожрет при этом всю память и проц, она будет нахрен не нужна.

Ничего, Lazin у нас продвинутый, он ручное управление на сборщик мусора поставит и заоптимизирует виртуальные машины явы и дотнета. smile

Добавлено через 3 минуты и 30 секунд



--------------------
user posted image
обычный день на винграде
PM   Вверх
A5uKa
Дата 15.12.2009, 14:13 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 1
Всего: 16



Цитата

если на коком-то языке можно написать достаточно быстрые программы, это ещё ничего не означает

кроме того, что на этом языке можно написать достаточно быстрые программы.
PM   Вверх
mrbrooks
Дата 15.12.2009, 21:34 (ссылка) |  (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: нет
Всего: 306



Цитата(Lazin @  14.12.2009,  13:58 Найти цитируемый пост)
ну так совсем не интересно, а где-же оппоненты? с кем холиварить???? 

Решение есть. Надо попросить админов сделать зеркало в дельфяцком разделе, тут же прибегут подростки и все тебе объяснят.

Цитата(A5uKa @  15.12.2009,  14:13 Найти цитируемый пост)
кроме того, что на этом языке можно написать достаточно быстрые программы. 

На днях осилил кошерный труд Девида Сеппы "Программирование на ADO.NET" в котором он разделяет эффективный и быстрый код. Под быстрым понимается собственно быстрый, под эффективным - удобный для программиста. Понятно - эффективный в данном контексте не есть быстрый, однако код может быть и быстрым, и эффективным. Под .NET тоже надо программировать - а не орать - "ааа тормоза - зачем же я учил C#!!! Две недели под хвост коту!!!". Последнее не плод моей гламурной фантазии, а вполне реальный факт. Недавно вот был такой кстати  smile 

PM MAIL   Вверх
A5uKa
Дата 16.12.2009, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 1
Всего: 16



Цитата

труд Девида Сеппы "Программирование на ADO.NET"

Неси !

всмысле... где его стоит искать кроме магазинов smile это как раз то, что мне надо как раз сейчас  smile 

мне вот нравится структура ASP.NET ... ну а там уже ведь не за бейсик браться >_<
PM   Вверх
serger
Дата 16.12.2009, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 19.6.2007
Где: Ижевск

Репутация: 0
Всего: 5



Цитата(Shaggie @  15.12.2009,  09:22 Найти цитируемый пост)
Напомню, что в язык зашита сборка мусора

А с чего вы взяли, что это плохо?.. Это уже сейчас как "необходимость", блин, даже не знаю какое слово подобрать...  smile 


--------------------
упс!
PM MAIL WWW Skype GTalk Jabber   Вверх
djamshud
Дата 16.12.2009, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 1
Всего: 39



>блин, даже не знаю какое слово подобрать

Вы хотели сказать "ненужность"?


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
GoldFinch
Дата 16.12.2009, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



Цитата(MAKCim @  14.12.2009,  13:19 Найти цитируемый пост)

идеальный вариант - С + что-то высокоуровневое типа Python

после чтения доков boost.python мне показалось что связкой С+Python пользуются только те, кто не знает о boost.python

Добавлено @ 12:17
по теме:
Код

#define _USE_MATH_DEFINES
#include <cmath>

#include <climits>
#include <fstream>

int main()
{
    std::ofstream out("sweep.txt");
    
    const int T = 10*60;
    const int fd = 11025;
    const double f1=600;
    const double df=400;

    for(int i = 0, N = T*fd; i!=N; ++i )
    {
        double t = double(i)*T/N;
        double f = f1+double(df)*i/N;
        double s = sin( f*t*2*M_PI );
        out << int(SHRT_MAX*s/1.44) << '\n';
    }
}

PS: тут в коде где-то ошибка, верхняя частота почему-то получается 1400 =\


Это сообщение отредактировал(а) GoldFinch - 16.12.2009, 12:25
PM MAIL ICQ   Вверх
serger
Дата 16.12.2009, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 19.6.2007
Где: Ижевск

Репутация: 0
Всего: 5



Цитата(djamshud @  16.12.2009,  11:16 Найти цитируемый пост)
Вы хотели сказать "ненужность"? 

Объясните.


--------------------
упс!
PM MAIL WWW Skype GTalk Jabber   Вверх
Lazin
Дата 16.12.2009, 14:34 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Цитата(serger @  16.12.2009,  14:19 Найти цитируемый пост)
Объясните

а он того, живет в 91-м smile
PM MAIL Skype GTalk   Вверх
serger
Дата 16.12.2009, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 19.6.2007
Где: Ижевск

Репутация: 0
Всего: 5



Цитата(Lazin @  16.12.2009,  14:34 Найти цитируемый пост)
а он того, живет в 91-м smile

Больше вопросов нет!   smile 


--------------------
упс!
PM MAIL WWW Skype GTalk Jabber   Вверх
GoldFinch
Дата 16.12.2009, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



алсо тема похоже о том, что 
"современные" ЯП превосходят "несовремененные", и при этом сопоставимы по производительности, там где не нужна производительность

в чем "современность" языка?
язык - это синтаксис+семантика, сделай для С++ компилятор в байт-код, он сразу станет современным?
может несовременность С++ в том что в нем нет сбора мусора?
так есть например D, тоже компилится в нативный код (и .NET и LLVM), и там есть сбор мусора, D современный язык?

может на C# или на Java писать удобнее? Да ниразу. Синтаксис от С недалеко ушел.
вот python например можно в чем-то назвать современным языком, в нем попробовали уйти от операторных скобок и произвольного форматирования кода. Да только это всего лишь небольшой шаг вперед.

Я думаю что современный язык, при большом количестве удобных встроенных языковых средств, должен иметь удобный синтаксис.
А критерием удобства синтаксиса надо считать энтропию исходника, и обратно - меру его избыточности, т.е. сколько можно выкинуть из исходника, сохранив его читаемость.
PM MAIL ICQ   Вверх
djamshud
Дата 16.12.2009, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 1
Всего: 39



>Объясните

Всего лишь шутка, игра слов. Наверное стоило смайлик поставить).

Добавлено через 4 минуты и 14 секунд
>а он того, живет в 91-м

Почему же? Ява не нужна на всем протяжении истории:D.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
serger
Дата 16.12.2009, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 19.6.2007
Где: Ижевск

Репутация: 0
Всего: 5



Цитата(djamshud @  16.12.2009,  15:40 Найти цитируемый пост)
Почему же? Ява не нужна на всем протяжении историиsmile

Бедный я..  smile 
Если честно, не понятно, в каком контекста. Да и язык уже далеко не новенький, хотя развивается..


--------------------
упс!
PM MAIL WWW Skype GTalk Jabber   Вверх
Lazin
Дата 16.12.2009, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Цитата(GoldFinch @  16.12.2009,  15:30 Найти цитируемый пост)
язык - это синтаксис+семантика, сделай для С++ компилятор в байт-код, он сразу станет современным?
неа

Цитата(GoldFinch @  16.12.2009,  15:30 Найти цитируемый пост)
так есть например D, тоже компилится в нативный код (и .NET и LLVM), и там есть сбор мусора, D современный язык?
ага

Цитата(GoldFinch @  16.12.2009,  15:30 Найти цитируемый пост)
может на C# или на Java писать удобнее? Да ниразу. Синтаксис от С недалеко ушел.

без обид, но ты либо не умеешь на них программировать, либо не знаешь С++, но мне кажется, что все-таки первое smile 

язык программирования это не только скобочки и отступы, это возможность описать определенное поведение, или невозможность
раз уж ты упомянул python, попробуй реализовать аналог python-овского генератора на С++ - 
Код

def collatz_seq(start)
    n = start
    yield n
    while n > 1:
        if n % 2 == 0:
            n = n/2
        else:
            n = n*3 + 1
        yield n

код конечно не сложный, но что-бы повторить его семантику на плюсах, придется постараться, а выглядеть это будет довольно убого

PM MAIL Skype GTalk   Вверх
Abyx
Дата 16.12.2009, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 601
Регистрация: 3.11.2009

Репутация: нет
Всего: 10



-------

Это сообщение отредактировал(а) Abyx - 16.12.2009, 20:00
PM MAIL   Вверх
GoldFinch
Дата 16.12.2009, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



Цитата(Lazin @  16.12.2009,  17:10 Найти цитируемый пост)
попробуй реализовать аналог python-овского генератора на С++ - 

http://codepad.org/XoipjOMa
итератор - он и в С++ итератор

да, кнешно вышло длинно, потому что в С++ это не средство языка, там вообще не очень-то нужных языковых средств, а зато много унаследовано от С ненужных..., но речь не о С

Добавлено через 13 минут и 56 секунд
наличие в Python нескольких полезных вещей еще не делает его хорошим языком. Взять например JavaScript - в нем много вещей которые сложно реализовать на питоне, и уж тем более на С++. Однако иногда, когда я кодю на js мне хочется некоторые вещи писать на C++
Сейчас есть много языков, и все они в той или иной мере - плохие. Есть много новых языков - но ни один из них не хочется назвать "современным".

Скобочки и отступы - не самая незначительная часть языка, мне например не нравится то, что мне приходится писать то, что компилятор мог понять и сам, и также не нравится что компилятор не учитывает того как я привык писать. 
Т.е. как в питоне, если в строке есть if и за ним условие, то непонятно зачем писать двоеточие, или если я всегда делаю отступы - это должно быть правилом языка, чтобы мне не надо было писать операторные скобки.
Или например если я задаю список параметров функции, компилятор должен понимать любой список, разделен он запятыми, только пробелами, хз-еще-чем

Любой код в конечном счете преобразуется в низкоуровневый алгоритм. Как в этом примере с yield/итератором, тот же код можно переписать и на С, и на асм. При этом размер кода увеличивается, однако, если это частая задача - ее можно обернуть в макрос, шаблон - использовать метапрограммирование чтобы расширить язык. На примере того же С++ видно что с метапрограммированием в нем сейчас плохо, надо писать множество угловых скобочек, а гдето задействовать препроцессор. Однако если бы язык позволял добавлять новые ключевые слова и операторы - проблема с фишками языка значительно бы уменьшилась.
PM MAIL ICQ   Вверх
Lazin
Дата 16.12.2009, 21:22 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Цитата(GoldFinch @  16.12.2009,  20:11 Найти цитируемый пост)
да, кнешно вышло длинно, потому что в С++ это не средство языка, там вообще не очень-то нужных языковых средств, а зато много унаследовано от С ненужных..., но речь не о С
вот смотри, итератор - моделирует обычный указатель, который в свою очередь предназначен для низкоуровневой работы с памятью. Это было сделано, для того, что-бы Си программистам было проще. Для того, что-бы реализовать такую последовательность(генератор в терминологии python-a), пришлось сделать свой указатель, и теперь у нас работа с такой последовательностью чисел выглядит так-же как работа с областью памяти, как-то странновато, не находишь? smile Но мы ведь работаем не с памятью, вместо последовательности Коллатца, там может быть вообще бесконечная последовательность, но выглядит это опять-же, как работа с ограниченным набором данных. Дыра в абстракции smile
это все ненужная сложность

Цитата(GoldFinch @  16.12.2009,  20:11 Найти цитируемый пост)
Скобочки и отступы - не самая незначительная часть языка, мне например не нравится то, что мне приходится писать то, что компилятор мог понять и сам, и также не нравится что компилятор не учитывает того как я привык писать. 

Цитата

template<typename T>
struct collatz_seq : std::iterator<std::input_iterator_tag, T> 
{
    typedef collatz_seq<T> this_t;

    T n;   

    collatz_seq(T start) : n(start) {}

    bool operator!= ( const this_t& )
    { 
          return n>1; 
    }

    this_t& operator++ () 
    {
        if( n % 2 == 0 )
            n = n/2;
        else
            n = n*3 + 1;

        return *this;        
    }

    collatz_seq() {}

    T operator* () { return n; }

    this_t operator++ (int) { T t=n; ++(*this); return this_t(t); }
    bool operator == ( const this_t& rhs ) { return !(*this!=rhs); }
};

int main()
{
    typedef int T;
    std::vector<T> v( collatz_seq<T>(5), collatz_seq<T>() );
    std::copy( v.begin(), v.end(), std::ostream_iterator<T>(std::cout,"\n") );
}

выделил красненьким то, о чем компилятор мог-бы и сам догадаться smile 

Цитата(GoldFinch @  16.12.2009,  20:11 Найти цитируемый пост)
Любой код в конечном счете преобразуется в низкоуровневый алгоритм. Как в этом примере с yield/итератором, тот же код можно переписать и на С, и на асм.

в конечном итоге - да, но вот сам процесс, есть задачи, которые С++(и не только ему) просто не по зубам, к примеру, ты когда-нибудь видел С++ библиотеку, которая бы позволяла один и тот-же код, выполнять либо на CPU, либо на GPU, либо на CPU используя SIMD расширения? Вот я то-же не видел, а для .NET оно есть, для python - тоже есть. smile 

Цитата(GoldFinch @  16.12.2009,  20:11 Найти цитируемый пост)
На примере того же С++ видно что с метапрограммированием в нем сейчас плохо, надо писать множество угловых скобочек, а гдето задействовать препроцессор. Однако если бы язык позволял добавлять новые ключевые слова и операторы - проблема с фишками языка значительно бы уменьшилась. 
ну а я о чем, вообще метапрограммирование как-бы не особо и нужно, если есть нормальный JIT-компилятор и функции высшего порядка. smile

Это сообщение отредактировал(а) Lazin - 16.12.2009, 21:28
PM MAIL Skype GTalk   Вверх
GoldFinch
Дата 16.12.2009, 21:45 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



Цитата(Lazin @  16.12.2009,  21:22 Найти цитируемый пост)
вот смотри, итератор - моделирует обычный указатель

итератор - это итератор. нечто, что позволяет итеративно обойти элементы некоторого составного объекта, 
смотри например паттерн "итератор" у четырех бандитов.
В данном случае, объект - это последовательность Коллатца, математический объект, состоящий из упорядоченных чисел. И итератор этот объект обходит. Так что с абстракцией все в порядке.

Красным в том коде можно больше половины кода выделить. Я не говорил что С++ это хорошо. Я говорил что качественно лучших языков - нет.
А из набора плохих языков, я выбираю С++, т.к. он сейчас лучше всего мне подходит - кроссплатформенный (мне сейчас это надо), с большим набором качественных библиотек (boost.asio), с высокой производительностью генерируемого кода (тоже надо). Другие задачи, я сейчас решаю на html+javascript.

Цитата(Lazin @  16.12.2009,  21:22 Найти цитируемый пост)
ты когда-нибудь видел С++ библиотеку, которая бы позволяла один и тот-же код, выполнять либо на CPU, либо на GPU, либо на CPU используя SIMD расширения?

Библиотека - это исходный код, скомпили ее компилятором который умеет "выполнять либо на CPU, либо на GPU, либо на CPU используя SIMD расширения" - и задача решена. Ничто не мешает компилить С++ в байт код, и потом выполнять его где угодно. В стандарте С++ ничего не сказано про нативную компиляцию, в спецификации С# - про JIT-компиляцию только 1 абзац, никаких требований во что компилить исходник и как его потом выполнять - нет, это языки.

Метапрограммирование - нужно, никакие функции высшего порядка и JIT-компилятор не добавят тебе в язык новую функциональность, тот же yield, если бы его небыло. В С++ же например добавили for each через кучу макросов и шаблонов (boost.foreach).

Это сообщение отредактировал(а) GoldFinch - 16.12.2009, 21:59
PM MAIL ICQ   Вверх
Lazin
Дата 16.12.2009, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Цитата(GoldFinch @  16.12.2009,  21:45 Найти цитируемый пост)
Красным в том коде можно больше половины кода выделить. Я не говорил что С++ это хорошо. Я говорил что качественно лучших языков - нет.

вот тут ты не прав, лучшие языки есть, но к сожалению это не mainstream, поэтому библиотек для них - меньше и реализация - слабее

Цитата(GoldFinch @  16.12.2009,  21:45 Найти цитируемый пост)
Метапрограммирование - нужно, никакие функции высшего порядка и JIT-компилятор не добавят тебе в язык новую функциональность, тот же yield, если бы его небыло.
в некоторых языках программирования, этот самый yield добавлен именно с помощью ФВП, та же последовательность Коллатца, но на F# - 
Код

let rec collatz_seq n = seq {
    let next x =
        if x % 2 = 0 
        then x / 2 
        else 3*x + 1
    yield n
    if n <> 1 then
        yield! (n |> next |> collatz_seq)
}

5 |> collatz_seq |> Seq.to_list;;

здесь seq - генерирует последовательность чисел, по требованию, и полностью реализовано средствами языка, используя функции высшего порядка

Цитата(GoldFinch @  16.12.2009,  21:45 Найти цитируемый пост)
Библиотека - это исходный код, скомпили ее компилятором который умеет "выполнять либо на CPU, либо на GPU, либо на CPU используя SIMD расширения" - и задача решена.
где ты видел компилятор С++, который умеет создавать data parallel код сам, я уже молчу про GPU =) 
проблема в том, что компиляция в С++ - статическая, а многие вещи становятся возможны только в том случае, если компиляция - динамическая
есть плюсовые библиотеки, которые позволяют создавать expression trees (я знаю только boost proto), по идее, на основе expression tree можно сгенирировать код для GPU, но почему-то никто еще это не реализовал smile 

Цитата(GoldFinch @  16.12.2009,  21:45 Найти цитируемый пост)
Ничто не мешает компилить С++ в байт код, и потом выполнять его где угодно. В стандарте С++ ничего не сказано про нативную компиляцию, в спецификации С# - про JIT-компиляцию только 1 абзац, никаких требований во что компилить исходник и как его потом выполнять - нет, это языки.
смысла в этом нет, так-как никаких преимуществ из компиляции в байт код CLR или JVM, язык извлечь не позволит

Добавлено через 6 минут и 44 секунды
у меня есть идея задачи - можно написать программу, которая будет искать в каком-либо каталоге файлы с изображениями, а затем обрабатывать из, к примеру, простым blur-ом на основе матрицы свертки
с одной стороны задача не совсем синтетическая, здесь есть и I/O и вычисления, с другой - здесь нужно обрабатывать достаточно большие массивы данных, поэтому код должен быть достаточно эффективен 
PM MAIL Skype GTalk   Вверх
GoldFinch
Дата 16.12.2009, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



Цитата(Lazin @  16.12.2009,  23:13 Найти цитируемый пост)
вот тут ты не прав, лучшие языки есть, но к сожалению это не mainstream, поэтому библиотек для них - меньше и реализация - слабее

я имел ввиду связку язык+компилятор+средства разработки+библиотеки+документация на все это

т.е. есть например замечательный язык Д, но существующие компиляторы не совсем соответствуют его спецификации, нормальной ИДЕ нет, с библиотеками тоже не очень, с документацией у них тоже плохо.
соответственно вместо того чтобы писать на хорошем Д, я пишу на плохом С++, потому что в конечном счете на С++ - быстрее и удобнее.
PM MAIL ICQ   Вверх
W4FhLF
Дата 18.12.2009, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 2
Всего: 121



Цитата(Lazin @  16.12.2009,  23:13 Найти цитируемый пост)
у меня есть идея задачи - можно написать программу, которая будет искать в каком-либо каталоге файлы с изображениями, а затем обрабатывать из, к примеру, простым blur-ом на основе матрицы сверткис одной стороны задача не совсем синтетическая, здесь есть и I/O и вычисления, с другой - здесь нужно обрабатывать достаточно большие массивы данных, поэтому код должен быть достаточно эффективен 


Чем можно пользоваться? 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Lazin
Дата 18.12.2009, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Цитата(W4FhLF @  18.12.2009,  13:02 Найти цитируемый пост)
Чем можно пользоваться? 

всем
PM MAIL Skype GTalk   Вверх
unicuum
  Дата 18.12.2009, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 16.3.2005
Где: Рашка

Репутация: 1
Всего: 8



Ну что Lazin, ты уже победил C++, положил на обе лопатки? smile 


--------------------
user posted image
обычный день на винграде
PM   Вверх
W4FhLF
Дата 18.12.2009, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 2
Всего: 121



Lazin, и что мы возьмём за эталонный набор данных? Нужен достаточно большой объём, чтобы потестить нормально. 

Плюс я предлагаю немного усложнить задачу и добавить scaling изображений и расчёт средних по каналам. 

Это сообщение отредактировал(а) W4FhLF - 18.12.2009, 17:14


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
GoldFinch
Дата 18.12.2009, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



Цитата(Lazin @  16.12.2009,  23:13 Найти цитируемый пост)
у меня есть идея задачи - можно написать программу, которая будет искать в каком-либо каталоге файлы с изображениями, а затем обрабатывать из, к примеру, простым blur-ом на основе матрицы свертки

IrfanView, пакетная обработка же

так или иначе, в этой задаче победит С++ , т.к. есть boost.GIL

Добавлено через 2 минуты и 44 секунды
алсо что насчет этого поста? 
http://forum.vingrad.ru/index.php?showtopi...t&p=2048366

тут больше тест не на производительность вычислений, а на буферизацию вывода данных
PM MAIL ICQ   Вверх
djamshud
Дата 18.12.2009, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 1
Всего: 39



По хорошему, это должна быть связка программ: одна ищет, другая отсеивает не-изображения, третья наносит эффекты. Тут еще и межпроцессное взаимодействие будет.

Добавлено через 15 секунд
Пункт 2 наверное лишний.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Lazin
Дата 18.12.2009, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



вот только чрезмерно усложнять не стоит, нужно чтобы приложение было не I/O bounded, может лучше взять одно изображение, но достаточно большое?
PM MAIL Skype GTalk   Вверх
W4FhLF
Дата 18.12.2009, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 2
Всего: 121



Ну можно взять штук 5-10 10-14 мегапиксельных снимков. Думаю нормально будет. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Lazin
Дата 18.12.2009, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



а если я запущу его на своей рабочей машине без современной видео-карты? smile 
и ты учти, что я то-же могу реализовать обработку на GPU, при желании smile 
PM MAIL Skype GTalk   Вверх
W4FhLF
Дата 18.12.2009, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 2
Всего: 121



Lazin, угу, забили на GPU )

Добавлено через 9 минут и 13 секунд
Хотя идея с GPU мне всё-таки нравится. smile 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Lazin
Дата 18.12.2009, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Цитата(W4FhLF @  18.12.2009,  17:44 Найти цитируемый пост)
Хотя идея с GPU мне всё-таки нравится.

мне тоже, и я ничего против не имею, но с условием, что программа должна запускаться не только на машинах с GPU последнего поколения smile 
PM MAIL Skype GTalk   Вверх
W4FhLF
Дата 18.12.2009, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 2
Всего: 121



http://www.nvidia.ru/object/cuda_learn_products_ru.html

Добавлено через 5 минут и 19 секунд
Единственное, что мы сравнивать будем? Ну напишу я на С модуль для CUDA, вызову его из С++. Ты вызовешь из через PInvoke какой-нибудь. И что дальше?) 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Lazin
Дата 18.12.2009, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Цитата(W4FhLF @  18.12.2009,  18:09 Найти цитируемый пост)
Единственное, что мы сравнивать будем? Ну напишу я на С модуль для CUDA, вызову его из С++. Ты вызовешь из через PInvoke какой-нибудь. И что дальше?) 

убедил, давай без CUDA smile 
PM MAIL Skype GTalk   Вверх
andrew_121
Дата 7.1.2010, 02:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: нет
Всего: 33



и? результат какой? где?


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
GoldFinch
Дата 7.1.2010, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



Lazin, придумай тест где питон будет сравним по производительности с С++, причем именно питон, а не функции ОС, и не модули расширения на других ЯП

я сам такой тест придумать не могу, наверное потому что его нет.
PM MAIL ICQ   Вверх
neutrino
Дата 7.1.2010, 14:51 (ссылка)  | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



О чеm спор? С/С++ будет использоваться в системных компонентах. Кернел на Джаве не напишут. Другое дело использовать С/С++ для всегo остального - пережиток прошлого. Те, кому проще i быстрее писать на С++ просто не знают достаточно хорошо С#/джава. Это скорее их незнание, а не преимущество С++. С++ быстрее? Чушь. Сегодня это реально нe так. А то, что футпринт больше - вообще смех. На наших машинах по 3-4 Гб все бежит нормалек. Зато удобство разработки просто аццкое.
O чеm спорим? Конечно С++ будеt отмирать. Но для системногo программирования оn все еще будет использован. Ну i реалтайм. И т.п.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
Lazin
Дата 7.1.2010, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Цитата(GoldFinch @  7.1.2010,  14:38 Найти цитируемый пост)
я сам такой тест придумать не могу, наверное потому что его нет

лол
вообще я думал писать не на питоне, а на java или c#, но на питоне  тоже можно писать быстрый код, к примеру код, моделирующий что-нибудь и использующий для этого NumPy будет довольно сложно побить smile 

neutrino, речь идет о том, что сложные системы писать на С++ уже не вариант, пока ты напишешь отладишь и протестируешь все на на С++/Си/Pascal - твои конкуренты будут далеко впереди. С другой стороны, никто не спорит, что на С++ можно писать расширения для питона или COM компоненты, которые потом будут дергаться из управляемого кода.
PM MAIL Skype GTalk   Вверх
Void
Дата 7.1.2010, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 11
Всего: 173



Цитата(GoldFinch @  7.1.2010,  16:38 Найти цитируемый пост)
придумай тест где питон будет сравним по производительности с С++, причем именно питон, а не функции ОС, и не модули расширения на других ЯП

Было. Простая обработка текстового файла. Итог: питон наравне с C++.
90% времени этот тест будет проводить в ядре интерпретатора: операции со строками и словарями.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
GoldFinch
Дата 7.1.2010, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



Цитата(Lazin @  7.1.2010,  15:00 Найти цитируемый пост)
и использующий для этого NumPy

ты в курсе что NumPy написан на С? 
я же написал, что тест должен сравнивать С++ с питоном, а не С++ с С

вариант "такой-то модуль расширения языка на С\С++\Фортране\еще-каком-то-не-питоне догонит код на С++" - не катит.

Добавлено через 11 минут и 28 секунд
Цитата(Void @  7.1.2010,  15:04 Найти цитируемый пост)
90% времени этот тест будет проводить в ядре интерпретатора: операции со строками и словарями.

там тема на 6 страниц - все читать лень, 
не нашел там обоснования что основное время работы программ зависит от скорости обработки данных кодом программы, а не скорости чтения\записи файлов ОС.
PM MAIL ICQ   Вверх
djamshud
Дата 7.1.2010, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 1
Всего: 39



Что же делать, если и сам интерпретатор пистона написан на "С\С++\Фортране\еще-каком-то-не-питоне"? Тогда вообще сравнивать нечего?


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
GoldFinch
Дата 7.1.2010, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



djamshud, он может быть написан хоть на асме, хоть использовать JIT-компиляцию с оптимизацией,
но если в процессе выполнения программы выполняется кусок кода скомпилированный другим компилятором для другого языка - производительность этого куска кода говорит только о том, другом языке.
PM MAIL ICQ   Вверх
Void
Дата 7.1.2010, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 11
Всего: 173



Цитата(GoldFinch @  7.1.2010,  17:40 Найти цитируемый пост)
не нашел там обоснования что основное время работы программ зависит от скорости обработки данных кодом программы, а не скорости чтения\записи файлов ОС. 

Сравни размер обрабатываемого файла и получившееся время. На флопике он лежал, что ли?
Цитата(GoldFinch @  7.1.2010,  18:07 Найти цитируемый пост)
но если в процессе выполнения программы выполняется кусок кода скомпилированный другим компилятором для другого языка - производительность этого куска кода говорит только о том, другом языке. 

Тогда спор лишён смысла.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
GoldFinch
Дата 7.1.2010, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



Void, почему лишен смысла? 
нормальное сравнение ЯП, это когда один и тот же алгоритм реализуется на одном (С++) и на другом языке (питон),
а не на одном языке (С++), и на 99% на третьем (С) - там мы сравниваем другую пару языков

Добавлено через 5 минут и 43 секунды
Цитата(Void @  7.1.2010,  16:13 Найти цитируемый пост)
Сравни размер обрабатываемого файла и получившееся время.

http://forum.vingrad.ru/index.php?showtopi...t&p=1403408
там нету единиц измерения времени, я хз, был там флопик или нет. 
в любом случае, если мерять какой-то алгоритм - то не надо мерять время чтения\записи файла.

Это сообщение отредактировал(а) GoldFinch - 7.1.2010, 16:33
PM MAIL ICQ   Вверх
Lazin
Дата 7.1.2010, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



GoldFinch, я предлагал сравнивать не синтетические тесты, понятно, что с++ код будет быстрее сортировать массив в памяти. Я предлагал найти задачу, похожую на реальную, в которой есть хоть какая-то сложность, понятно, что простую задачу можно легко оптимизировать на чем угодно. Но если программа взаимодействует с ОС, использует несколько CPU, прилично засирает хип, использует сторонние библиотеки, то все уже не так просто. smile 
PM MAIL Skype GTalk   Вверх
Void
Дата 7.1.2010, 16:52 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 11
Всего: 173



Цитата(GoldFinch @  7.1.2010,  18:32 Найти цитируемый пост)
почему лишен смысла? 

Потому что любая программа на Питоне всё время, которое она не проводит в системных вызовах и внешних модулях, проводит в интерпретаторе, который написан на Си. Тем самым те себе резервируешь неотразимый аргумент, который, впрочем, только тебя и интересует.
Цитата(GoldFinch @  7.1.2010,  18:32 Найти цитируемый пост)
там нету единиц измерения времени

Юпитерианские сутки, что же ещё?
Цитата(GoldFinch @  7.1.2010,  18:32 Найти цитируемый пост)
в любом случае, если мерять какой-то алгоритм - то не надо мерять время чтения\записи файла.

А если ввод-вывод идёт вперемежку с вычислениями? А если весь ввод-вывод заключается в печати одной строки? Если ты минимально вчитывался в условие задачи, ты прекрасно себе представляешь соотношение ввода-вывода и прочих затрат при её исполнении, и что time $command — это адекватный способ замера.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Akella
Дата 12.1.2010, 18:08 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 1
Всего: 329



Цитата(Lazin @  14.12.2009,  11:52 Найти цитируемый пост)
Я считаю, что такие языки программирования, как C++ и Delphi - свое отживают, причина их широкого использования - инерция и большое количество унаследованного кода.

Т.е. я правильно делаю, что пытаюсь изучать джаву?
PM MAIL   Вверх
RockClimber
Дата 12.4.2010, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 848
Регистрация: 5.5.2006
Где: планета 013 в тен туре

Репутация: нет
Всего: 15



Цитата(Lazin @  14.12.2009,  11:52 Найти цитируемый пост)
Я считаю, что такие языки программирования, как C++ и Delphi - свое отживают, причина их широкого использования - инерция и большое количество унаследованного кода.

Пока ты тут в очередной раз хоронишь Delphi и С++ (а некоторые утверждают, что это "похороны" длятся уже лет 10), на sql.ru уже на полном серьезе обсудили тему перспективы Java. До конца я не дочитал, но где-то в середине джаву на полном серьезе кто-то пытался хоронить  smile 

Цитата(Lazin @  14.12.2009,  11:52 Найти цитируемый пост)
В общем, я предлагаю такой challenge - выбираем задачу, но только не синтетическую, а достаточно близкую к жизни, вы пишете реализацию на своем "быстром" %favorite language%, а потом я пишу то-же самое на "тормзном" C# или Java, или еще чем-нибудь. Моя реализация отстает по скорости не более чем на 25%

Вот тебе практическая задача: перепиши Open Office Calc (он же на java написан?), чтобы он не отставал по производительности от Excel (он же на С написан?) намного более, чем на 25%. Куча благодарных потомков тебе обеспечена. Ну а пока в плане скорости и юзабилити OO - полное УГ.


--------------------
Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит.
PM MAIL GTalk   Вверх
kemiisto
Дата 12.4.2010, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 3
Всего: 160



Цитата(RockClimber @  12.4.2010,  16:09 Найти цитируемый пост)
Open Office Calc (он же на java написан?)

Нет. На ++. Тут список того, что в OpenOffice.org написано на Java. Не веришь - скачай сорцы.

Цитата(RockClimber @  12.4.2010,  16:09 Найти цитируемый пост)
Excel (он же на С написан?)

Вот уж не думаю. Тоже на ++, стоит думать.

Цитата(RockClimber @  12.4.2010,  16:09 Найти цитируемый пост)
Ну а пока в плане скорости и юзабилити OO - полное УГ.

Тупой пример. Ты тогда должен написать тулзу по скорости сравнимую с MS Office.

RockClimber, ты не понял. Речь шла о том, что на С++ можно написать менее требовательное к ресурсам и более быстро работающее приложение. Но в очень редких случаях, командой опытных специалистов за долгие годы. 

Хочешь померяться - ради бога (только Lazin'а найди). А ребят из MS не приплетай. Не о них речь.


--------------------
PM MAIL WWW GTalk Jabber   Вверх
RockClimber
Дата 12.4.2010, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 848
Регистрация: 5.5.2006
Где: планета 013 в тен туре

Репутация: нет
Всего: 15



Цитата(kemiisto @  12.4.2010,  15:31 Найти цитируемый пост)
Нет. На ++. Тут список того, что в OpenOffice.org написано на Java. Не веришь - скачай сорцы.
Верю. Я в историю вопроса не влезал, просто такое впечатление сложилось, что OO написан на java.

Цитата(kemiisto @  12.4.2010,  15:31 Найти цитируемый пост)
Тоже на ++, стоит думать.
Это не важно, С++ Lazin тоже хоронит.

Цитата(kemiisto @  12.4.2010,  15:31 Найти цитируемый пост)
Хочешь померяться - ради бога (только Lazin'а найди). А ребят из MS не приплетай. Не о них речь.
Я - ни в коем случае не хочу ничем ни с кем меряться. Просто Lazin утверждал, что может писать эффективный код, и просил пример задачи из жизни. Ну вот пусть и уделает M$ на самой что ни на есть жизненной задаче, раз уж ему известны секреты эффективного написания алгоритмов.



--------------------
Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит.
PM MAIL GTalk   Вверх
kemiisto
Дата 12.4.2010, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 3
Всего: 160



Цитата(RockClimber @  12.4.2010,  16:44 Найти цитируемый пост)
сто Lazin утверждал, что может писать эффективный код, и просил пример задачи из жизни. Ну вот пусть и уделает M$ на самой что ни на есть жизненной задаче, раз уж ему известны секреты эффективного написания алгоритмов.

Блин, ну нельзя же доводить до абсурда. Группа разработчиков MS Office за 20 лет и море баксов против одного программиста за малое время бесплатно. Смысл?

Поэтому он и предложил "померяться" 1-on-1 на какой-нибудь небольшой задаче. Чтобы решалась за обозримое время.


--------------------
PM MAIL WWW GTalk Jabber   Вверх
LamerTM
Дата 12.5.2010, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 11.3.2006

Репутация: нет
Всего: 0



Цитата(Lazin @  14.12.2009,  11:52 Найти цитируемый пост)
В общем, я предлагаю такой challenge - выбираем задачу, но только не синтетическую, а достаточно близкую к жизни, вы пишете реализацию на своем "быстром" %favorite language%, а потом я пишу то-же самое на "тормзном" C# или Java, или еще чем-нибудь. Моя реализация отстает по скорости не более чем на 25%, а скорее всего рвет вашу как тузик тряпку xD. Ну и естественно, приложение должно полностью утилизировать современные многоядерные процессоры, а куда без этого?


Если предложение все еще в силе, то вот код, написанный на делфи:

Код

procedure TForm1.Button39Click(Sender: TObject);
var       st: Cardinal;
          i, j, c, py, capacity: Integer;
          gar, u, g1: array1_Integer;
begin
          st := GetTickCount;
          SetLength(gar, 5);
          for i := 0 to 1000 - 1 do
          begin
            capacity := 100;
            SetLength(g1, capacity);
            for j := 0 to 3000 - 1 do
            begin
              if j = capacity then
              begin
                capacity := capacity * 2;
                SetLength(g1, capacity);
              end;
              g1[j] := 1;
            end;
            c := Length(gar);
            py := Length(g1);
            SetLength(gar, c + py);
            CopyMemory(@gar[c], @g1[0], py * 4);
          end;
          st := GetTickCount - st;

          c := 0;
          for i := 0 to Length(gar) - 1 do c := c + gar[i];

          Memo1.Lines.Add('Time='+IntToStr(st));
          Memo1.Lines.Add(IntToStr(c));
end;


Задача реальная. Хотя и сведена к синтетическому тесту.

Это сообщение отредактировал(а) LamerTM - 12.5.2010, 10:34
PM MAIL   Вверх
Shaggie
Дата 12.5.2010, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: нет
Всего: 72



LamerTM, в чём заключается реальность задачи? И CopyMemory в 24 строке меня сильно напрягает.


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
LamerTM
Дата 12.5.2010, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 11.3.2006

Репутация: нет
Всего: 0



Shaggie
Есть функция LoadFile, читающая сжатый файл. При распаковке он превращается в массив структур. Определить размер этого массива заранее нельзя, для этого надо полностью распаковать весь файл. Поэтому по мере распаковки происходит дописывание по одной структуре в массив, а массив при необходимости увеличивается. Все это реализовано в функции, которой передается имя файла, а она возвращает массив распакованных данных.

Есть еще одна функция, которой передается массив из имен файлов. Каждый файл она грузит вызывая функцию LoadFile, получая от нее распакованный массив. После чего она должна все эти массивы состыковать воедино (с некоторым преобразованием, но оно тут не важно).

В коде, что я привел выше, внутренний цикл это имитация загрузки файла в массив, а внешний цикл это имитация слияния массивов в один.
PM MAIL   Вверх
LamerTM
Дата 12.5.2010, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 11.3.2006

Репутация: нет
Всего: 0



И да, тест выявляет, что в делфи хорошо сделана куча, и, собственно, больше ничего. Хочется узнать как такую же скорость получить на C#. Может это не совсем то, что подразумевал Автор темы, но все равно интересно.
PM MAIL   Вверх
Shaggie
Дата 12.5.2010, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: нет
Всего: 72



Дык получился обычный числодробильный синтетический тест с без надобности запутанной лишней логикой.
Как раз реальная задача с распаковкой файлов имела бы больше смысла.


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
qweqwe
Дата 12.5.2010, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 31.1.2007

Репутация: нет
Всего: 0



Цитата(LamerTM @  12.5.2010,  11:50 Найти цитируемый пост)
И да, тест выявляет, что в делфи хорошо сделана куча, и, собственно, больше ничего. Хочется узнать как такую же скорость получить на C#. Может это не совсем то, что подразумевал Автор темы, но все равно интересно.

где-бы еще этот ваш дельфи взять smile 

вообще, это синтетическая задача, современные языки программирования позволяют проще писать более сложный код, в этом их основное преимущество, подобный тест будет зависеть от того, насколько качественно работает менеджер памяти, в .NET выделение памяти в обычной куче - O(1), менеджер памяти delphi - вынужден искать свободный участок памяти, так что зависимость будет иметь вид O(kf), где k - некий коэффициент, зависящий от фрагментации кучи

Добавлено через 14 минут и 46 секунд
у меня есть такое предложение: можно написать несложный интерпретатор, на разных языках, на котором потом что-нибудь считать и сравнивать время работы
PM MAIL   Вверх
bems
Дата 20.5.2010, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 0
Всего: 88



qweqwe, ну оценивать теоритически то, что тебе написали выложили дело дурное. 
Напиши тоже самое шарпе, и покажи всем, что вот тут действительно O(1), а вот тут O(kf)


--------------------
Обижено школьников: 8
PM MAIL   Вверх
RockClimber
Дата 25.5.2010, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 848
Регистрация: 5.5.2006
Где: планета 013 в тен туре

Репутация: нет
Всего: 15



Извиняюсь за оффтоп... А правда, что qweqwe и Lazin - два аккаунта одного человека?


--------------------
Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит.
PM MAIL GTalk   Вверх
bems
Дата 25.5.2010, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 0
Всего: 88



RockClimber, уже нет


--------------------
Обижено школьников: 8
PM MAIL   Вверх
LSD
Дата 25.5.2010, 15:05 (ссылка) |    (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата(RockClimber @  25.5.2010,  13:12 Найти цитируемый пост)
Извиняюсь за оффтоп... А правда, что qweqwe и Lazin - два аккаунта одного человека?

Еще никогда Штирлиц не был так близок к провалу smile 


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.2643 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.