Miguel de Icaza объявил (http://tirania.org/blog/archive/2009/Aug-06.html) о доступности варианта (http://code.google.com/p/csharp-sqlite/) библиотеки Sqlite, переписанной полностью на языке C#, что позволяет использовать данную БД в Silverlight приложениях или на ASP.NET серверах, работающих в режиме средней степени доверия. Тесты показали, что Sqlite на C# позволил выполнить 1.5 миллиона select и 300 тыс. insert операций в секунду, что примерно в 5 раз медленней оригинальной реализации на языке Си.Кроме того, можно отметить, что Антон Васильев представил (http://antono.info/ru/163-graficheskiy-interfeys-dlya-sqlite) графический интерфейс для управления базами SQLite - sqlitegui (http://gitorious.org/ubuntu-on-rails/sqlitegui), созданный на базе заброшенного проекта rsqlitegui (http://rsqlitegui.rubyforge.org/).
URL: http://tirania.org/blog/archive/2009/Aug-06.html
Новость: http://www.opennet.me/opennews/art.shtml?num=22942
О как замечательно! Буквально намедни на сон грядущий задумался, а есть ли биндинг sqlite для .NET... А тут такая замечательная новость :)
http://www.radiopark.ru
>что примерно в 5 раз медленней оригинальной реализации на языке СиЧто-то не пойму. Этому надо радоваться что ли? Нельзя было сделать биндинги к сишной библиотеке?
тут ключевая фраза:
>что позволяет использовать данную БД в Silverlight приложениях или на ASP.NET серверах, работающих в режиме средней степени доверия.есстествено, что споры о производительности (c# быстрее c и т.д.) забыты и тут не уместны. :-D
ps:
мне вот интересно, в новостях про моно специально не указывается лицензия подобных продуктов или тут не принято?
>тут ключевая фраза:
>что позволяет использовать данную БД в Silverlight приложениях или на ASP.NET серверах, работающих в режиме средней степени доверия.Т.е. я правильно понял, что подрубить нешарпованное ("в Silverlight приложениях или на ASP.NET серверах, работающих в режиме средней степени доверия") НЕЛЬЗЯ???
фиг его знает что/кто у них там на доверии... я просто новость прочитал.
Полно Вам! Кому интересно - сходит по ссылки и сам убедится, что лицензия _действительно_ свободная :)
>Полно Вам! Кому интересно - сходит по ссылки и сам убедится, что
>лицензия _действительно_ свободная :)э нет. порядок должен быть.
во всех новостях пишут, а тут "Полно Вам!".
>>Полно Вам! Кому интересно - сходит по ссылки и сам убедится, что
>>лицензия _действительно_ свободная :)
>
>э нет. порядок должен быть.
>во всех новостях пишут, а тут "Полно Вам!".Стоит ли на такой фигне заморачиваться?
>>>Полно Вам! Кому интересно - сходит по ссылки и сам убедится, что
>>>лицензия _действительно_ свободная :)
>>
>>э нет. порядок должен быть.
>>во всех новостях пишут, а тут "Полно Вам!".
>
>Стоит ли на такой фигне заморачиваться?на опеннет? думаю да.
вот был бы мононет... другое дело
>>что примерно в 5 раз медленней оригинальной реализации на языке Си
>
>Что-то не пойму. Этому надо радоваться что ли? Нельзя было сделать биндинги
>к сишной библиотеке?Нет конечно. Сишную библиотеку низя подписывать цифровой подписью. clr библиотеку можно.
Ах вот оно что.Свобода, значит... а рут ауторити подписывающая сертификаты аффтарам там случайно не MS?А то с драйверами вон так сделали - в итоге если MS не нравится некий драйвер, им говно вопрос его выпилить и запретить.И ничего с этим не поделаешь - в иерархии сертификатов они сверху.И, кстати, нативные дллы подписанные подписями я своими глазами видел. Что за пиндеж что их нельзя подписывать?
При чем здесь свобода. Вы будете грузить себе на компьютер неподписанный код с какого-либо сайта? Я лично нет. При чем здесь MS, когда подписывает Verisign, и MS здесь никаким боком не стояло. И как вы представляете себе запуск нативной dll на power pc?А, дайте догадаюсь, это у вас личная фанатичная неприязнь к ms, да такая что вы тратите свое личное время чтобы пукать на форума. ну ну.
> Sqlite на C# ... примерно в 5 раз медленней оригинальной реализации на языке Си.Я догадывался, что C# хуже, чем Си; но никогда не думал, что настолько хуже. Интересно, почему это? Связано ли это с компилянием в псевдо-ассемблер?
Нет, это связано с тем что возраст этой библиотеки еще пеленочный. За пару лет производительность подтянут. Как подтянут и jit :)
Странно, это уже 3 по счету библиотека, которая мне встречалась, переписанная с C на C#, но при этом у всех разница с исходной реализацией в 3-5 раз. Так что думаю скорость принципиально не улучшится.
>Так что думаю скорость принципиально не улучшится.Логично.А вы думали что не-нативный код и куча параноидальных проверок - нахаляву?Вот воткнут при генережке кода вагон параноидальных проверок в глубоком цикле.И тормознется он раз в пять.Потому что большую часть цикла составят проверки.А то что данные можно было заранее проверить и в цикле это не гонять - такие среды разумеется не знают.В сях это может знать програмер но в моно\яве и подобных VM средах считается что програмер - дебил и от него надо защищаться.С ножом к горлу по возможности.Вообще, некоторые очень любят наносить пользу и причинять добро...
самое интересное, что .NET или Java программеры умалчивают, или просто не знают, на каких концептах базируются эти языки/платформы программирования, из-за чего программы только теоретически, или в инкубаторских условиях могут по скорости выполнения приближаться к Си и плюсам. в реальной жизни - сливают по полной программе.
> умалчивают, или просто не знают, на каких концептах базируются эти
> языки/платформы программирования,Скорее второе.Достаточно посмотреть на тех кто на этом пишет...
Конечно медленнее, если в С# даже базовые типы (int/float и тп) выступают классами то что говорить о более громоздких вещах... А реализация работы со строками на мой взгляд ужасна (класс String), при изменении одного символа в объекте происходит переразпредиление памяти (создается новая строка, а старая удаляется). ИМХО, слишком уж избыточный язык... Хотели сделать язык без Сишных костылей, а добавили новых =).
> Конечно медленнее, если в С# даже базовые типы (int/float и тп) выступают классамиНу и в каком месте они классы? Формально - это структуры в терминах дотнета, отличие их от классов (опять же, в терминах дотнета) в том, что последнии как правило создаются в куче, в то время как структуры выделяются на стеке. То, что они инкапсулируют некоторые методы - воспринимайте как конструкцию языка, в остальном это типичные базовые типы, от которых нельзя даже унаследовать свой собственный. Это ограничение сделано как раз по ссображениям производительности.
> А реализация работы со строками на мой взгляд ужасна (класс String), при изменении одного символа в объекте происходит переразпредиление памяти (создается новая строка, а старая удаляется).Опять глупости вследствие Вашей безграмотности. Когда нужна эффективная работа со строками - используют StringBuilder. Совершенно нормальный подход для скриптового языков.
>Ну и в каком месте они классы? Формально - это структуры в терминах дотнетаа чем структура от класса отличается?
В структуре свойства и методы по умолчанию со спецификатором public, а в классе privat. Но в шарпе это их не единственное отличие... С C# знаком не долго (3-4 мес.), но после С/С++ на нем писать очень не приятно)))) (Возможно дело привычки)
>В структуре свойства и методы по умолчанию со спецификатором publicэти детали не влиябт на размер в памяти... ну и скорость работы соотвественно
Говорю же, структура создается на стеке. (Хм... интересно, а Nullable-структуры тоже создаются на стеке) Класс имеет ссылочный тип и создается в куче.
>Говорю же, структура создается на стеке. (Хм... интересно, а Nullable-структуры тоже создаются на стеке) Класс имеет ссылочный тип и создается в куче.правда что ли?
какой ужас.
>правда что ли?
>какой ужас.Не пойму Вас, а что ужасного?
>>правда что ли?
>>какой ужас.
>
>Не пойму Вас, а что ужасного?пруфлинк на то, что структуры создаются в стеке можно?
>пруфлинк на то, что структуры создаются в стеке можно?Jeffrey Richter. "CLR via C#, Second Edition"
Primitive, Reference, and Value Types -> Reference Types and Value Types
>>пруфлинк на то, что структуры создаются в стеке можно?
>
>Jeffrey Richter. "CLR via C#, Second Edition"
>Primitive, Reference, and Value Types -> Reference Types and Value Typesпредлагаете преобрести по сходной цене? :-D
так не серьёзно! тем более поговаривают, что и доки для платформы отличные и т.д.
Вы бы ссылочку что ли кинули, где написано, что структуры создаются в стеке....
а. сам нашёл. http://gazette.linux.ru.net/lg85/ortiz.html
действительно ужас. видимо предполагается, что структуры имеют малые размеры, не содержат сложные типы данных и т.д.
а вот тут http://simple-cs.ru/store/csharp/4/ :
>С# также подразделяет типы на две другие категории: размерные и ссылочные. Основное различие между ними — это способ, которым их значения сохраняются в памяти. Размерные типы сохраняют свое фактическое значение в стеке. Ссылочные типы хранят в стеке лишь адрес объекта, а сам объект сохраняется в куче. Куча — основная память программ, доступ к которой осуществляется на много медленнее чем к стеку. Если вы работаете с очень большими объектами, то сохранение их в куче имеет много преимуществ.вообще непонятно с чего бы доступ к куче был на много медленнее.
в любом случае, все переменные так или иначе - динамические.
>вообще непонятно с чего бы доступ к куче был на много медленнее.Дело в том, что куча непростая, а "управляемая". Я даже боюсь представить, чего только на нее понавешано...
>в любом случае, все переменные так или иначе - динамические.
Что Вы понимаете под словом "динамические"?
>действительно ужас.Но я так и не понял, что в этом ужасного? Никого ведь не смущает что в Си структуры тоже создается на стеке. Да и в Плюсах далеко не всегда память для объектов выделяют на куче - new тот еще тормоз.
видимо то, что в таких услових отставание в 5 раз - не так много.
Ужасно имхо то что сишный компилер может дли int тупо выделить регистры проца, если они есть.Разницу в скорости работы представляете?И кстати, если забить на древнее говно х86, где регистров кот наплакал, у более нормальных процов(х64, арм, мипс, ...) регистров много.И при таких условиях дотнет пожалуй еще и не во столько раз сольет.
>Ужасно имхо то что сишный компилер может дли int тупо выделить регистры
>проца, если они есть.Разницу в скорости работы представляете?Работу JIT-компилятора хорошо представляете? Если нет - то не надо делать предварительные выводы о том, что куда помешает. В целом, C# вполне пристойный скриптовый язык.
> Я догадывался, что C# хуже, чем Си; но никогда не думал, что настолько хуже. Интересно, почему это? Связано ли это с компилянием в псевдо-ассемблер?Однозначно. плюс ещё "инженеры", какие они у майкрософта? (бу-га-га) Очень просто можно сравнить: пишешь цикл в 10 тыс. printf на Сях и например на перле. time вам всё покажет. Это при том, что перловый printf ничего особо не делает - прямо вызывает одноимённую Сишную функцию.
Даже мегаоптимальная реализация виртуальной машины Inferno Dis от создателей UNIX работает примерно на 30% медленнее нативного Си по их собственной оценке. Подобное отставание, кстати, было и у первого Си от ассемблерного кода, что бурно обсуждалось в начале 70-х. У ядра ОС на Си было много противников, машины то были медленные. А сейчас Линус против микроядерности, хотя плата за неё (написаную сопливыми студентами) не превышает 10%, что является очевидной (и очередной) глупостью этого попсового идола молодёжи.
Ну а 30% - это небольшая плата за 100% переносимость исполняемого кода в распределённой системе. А в 5 раз - это ни в какие ворота не лезет. Завязывайте народ работать на маздайных технологиях - пусть они маздай.
>Антон Васильев представил графический интерфейс для управления базами SQLite - sqliteguiа под 64 бита сборки нету.
зы:
а вообще бы новость отдельно надо. ну никаким боком к моно, а скажут ... а скажут что их было четверо. :-D
>а вообще бы новость отдельно надо.+1. SQLite мне интересен, я его использую, так что гуй для него тоже потенциально полезная мне приблуда.А вот дотнеты и ASP я бы хотел видеть только в страшных снах - на кой перец валить все в одну кучу?...
есть же sqlite manager в виде дополнения к фаерфоксу. Пока лучше графический интерфейсов не придумали
>есть же sqlite manager в виде дополнения к фаерфоксу. Пока лучше
>графический интерфейсов не придумалиЕсть вагон графических интерфейсов к sqlite.Достаточно у пакетного манагера спросить... :)
а разве при инсертах основные издержки будут не на дисковых операциях? О_О
а Вы думаете данные пишутся на диск в синхронном режиме?
да и по статистике 95% всего, что происходит с субд - это селекты. даже в oltp.
Раньше я думал, что фраза "переписать под моно" - это шутка. Оказывается, это суровая реальность.