Программирование на C#

1) Delphi 7, optimize+, debug-, ConsApp
GetTickCount() заменил на GetTime(). Runtime 4100~4300 ms

2) .NET(csc&clr от .NET 3.5), optimize+, debug-, ConsApp
Была проведена маленькая оптимизация. Runtime 4950~5250 ms.

Win SP2, процессор Pentium D какой-то на 2.8 ГГц.
25% это очень смешно... Delphi 7 хлам. Я готов заплатить и 100% производительности взамен нативности, эффективности и поддержки современных веб, winApp и датабейз технологий.
Оба проекта мне на мыло, если можно homm86 @ mail.ru . Если можно, то без мусора в виде исполняемых и временных файлов. Только файл проекта со всеми опциями и исходники.

Все перечисленное есть в дельфи, особенно если учесть что D7 далеко не последняя версия. Кстати, какое отношение .Net имеет к нативности? .Net как бы наоборот, не нативный, а полу-интерпретируемый код.

PS. Тупая интерсвязь опять отключилась дома. Только с работы могу писать, а простестить соответственно смогу только дома.
 
Ш

Штурман

1)... выслал исходники и выполняемые файлы. Параметры компиляции для .NET csc /optimize+ /debug- Program.cs, для Delphi выставил полную оптимизацию, без отладки.

2) Native, не смысле code(native code Delphi vs bytecode .NET), а смысле class library, interface и environment... например можно сравнить работу с файлами в .NET и Delphi for Win32. В Delphi все через Ж было(может сейчас, что-то изменилось)... в .NET вполне приемлемо... то же самое с IE, Word, Desktop, WMI и тд. Хотя сразу говорю, что в современном Delphi я не шарю.
 

Serge

Ословед
.Net как бы наоборот, не нативный, а полу-интерпретируемый код.
.Net интерпретируется, а точнее компилируется из промежуточного кода, в момент запуска сборки, исполняется же чистый машинный код.
 

    Crammer

    очки: 6
    спасибо за то, что познакомил с классным сериалом !!! )))
Ш

Штурман

Функция
Код:
        static void ArrayFunction(ref int[] nALocal)
        {
            nALocal[0] = 1;
        }
код
Код:
.method private hidebysig static void  ArrayFunction(int32[]& nALocal) cil managed
{
  // Code size       7 (0x7)
  .maxstack  8
  IL_0000:  nop
  IL_0001:  ldarg.0
  IL_0002:  ldind.ref
  IL_0003:  ldc.i4.0
  IL_0004:  ldc.i4.1
  IL_0005:  stelem.i4
  IL_0006:  ret
} // end of method Program::ArrayFunction
Функция
Код:
            foreach (int n in nA)
            {
                Console.WriteLine(n.ToString()); 
            }
код
Код:
.method private hidebysig static void  ArrayFunction(int32[] nALocal) cil managed
{
  // Code size       6 (0x6)
  .maxstack  8
  IL_0000:  nop
  IL_0001:  ldarg.0
  IL_0002:  ldc.i4.0
  IL_0003:  ldc.i4.1
  IL_0004:  stelem.i4
  IL_0005:  ret
} // end of method Program::ArrayFunction

Т.е. (ref int[] a) идентично (int **a), а (int[] a) идентично (int *a).

Итог:
1) Передовая массив без ref, его можно изменять и изменения отразятся в вызывающей функции... но если на ссылку назначить новый массив, то все манипуляции с этим массивом не отразятся на массиве в вызывающем методе.
2) Если параметр массива ref, то new подействует и на массив в вызывающем методе.

А как защитить массив от изменений при передачи в метод?
 

KL9YnEr

Ословед
Народ, я тут тоже тут недавно начал кодить на языке С, говорили что для понимания лучше с++ 3,1!! Ну я вот немного покодил и решил на шарп перейти, может я конечно уже совсем, но я не нашел в осле си шарп, выложите ктонть ссылочку, ах да, вначале темы там ссылки на учебнички, так вот скажите, как открыть формат yjvu, как то так???
 
Ш

Штурман

Народ, я тут тоже тут недавно начал кодить на языке С, говорили что для понимания лучше с++ 3,1!! Ну я вот немного покодил и решил на шарп перейти, может я конечно уже совсем, но я не нашел в осле си шарп, выложите ктонть ссылочку, ах да, вначале темы там ссылки на учебнички, так вот скажите, как открыть формат yjvu, как то так???

1) Степень усвоения языка на 99% процентов зависит от интеллекта и заинтересованности обучаемого, а не от компилятора... тот кто советую старые компиляторы для начинающих ошибаются!...
2) Ссылки на компиляторы(а точнее на IDE) в первом посте темы.
3) DjVu можно открыть в WinDjView-0.4.2-rus.rar
 

KL9YnEr

Ословед
Я наверное не совсем понял, си шарп это разве не целая программа типо си++ билдер, разве ето просто компилятор, но тогдаведь придется писать весь текст в блокноте, так?
 

KL9YnEr

Ословед
Все все все, все понял, извините за тупость))) Можно не отвечать))
 
Ш

Штурман

Все все все, все понял, извините за тупость))) Можно не отвечать))

Я не думаю, что ты понял :)
1) C# это стандартизованный язык программирования, а не программа.
2) Компилятор C# от Microsoft (csc.exe) входит в состав .NET Framework или устанавливается совместно с MSVS. Это обычное консольное приложение.
3) MSVS это интегрированная среда разработки для C#,C++(CLI/MFC),VB.NET программистов. Это только удобная оболочка, которая автоматически выполнят часть работы за программиста.
 

Serge

Ословед
аналогом можно считать классы в namespace System.Collections

ArrayList Implements the IList interface using an array whose size is dynamically increased as required.
BitArray Manages a compact array of bit values, which are represented as Booleans, where true indicates that the bit is on (1) and false indicates the bit is off (0).
CaseInsensitiveComparer Compares two objects for equivalence, ignoring the case of strings.
CaseInsensitiveHashCodeProvider Obsolete. Supplies a hash code for an object, using a hashing algorithm that ignores the case of strings.
CollectionBase Provides the abstract base class for a strongly typed collection.
Comparer Compares two objects for equivalence, where string comparisons are case-sensitive.
DictionaryBase Provides the abstract base class for a strongly typed collection of key/value pairs.
Hashtable Represents a collection of key/value pairs that are organized based on the hash code of the key.
Queue Represents a first-in, first-out collection of objects.
ReadOnlyCollectionBase Provides the abstract base class for a strongly typed non-generic read-only collection.
SortedList Represents a collection of key/value pairs that are sorted by the keys and are accessible by key and by index.
Stack Represents a simple last-in-first-out (LIFO) non-generic collection of objects.
 
Народ, я недавно начал изучать C# так как ешо не силён в програмировании мне очень понравилась книга Г. Шилдт C# Учебный курс, но начиная с 62 страницы там непропечатано, есть ли у когонить нормальная версия ???
 

Serge

Ословед
можно ли в C# как-то добавить код на асме? (в с++ можно было)
например с помощью этого проекта http://www.codeplex.com/netasm

если строго следовать идеологии .NET, то unmanaged код должен компилироваться в отдельные библиотеки и вызываться из managed .NET кода.
 
есть вопрос: какой компонент в МС visual studio позволяет выделить отдельное слово цветом? также просьбе написать методы, которые это позволяют
 
есть противоположное мнение. :shuffle: программы на C# работают быстрее на 5-10% за счет учета железной конфигурации машины при компиляции. впрочем на современных компьютерах эта разница практически неуловима и не имеет значения. ссылку на статистику не приведу, не упомню уже где видел.

один из несомненных минусов - .Net программы с "окошками" бешено жрут память. :cry2:
Тут дело не в языке а в среде .NET. Доводилось проводить тесты по быстродействию, т.е. бралась нативная программа реализующая некий алгоритм, потом данный алгоритм реализовывался под .NET. Падение производительности имело место всегда, т.е. не разу .NET программа не работала быстрее нативной. Естественно, если пользователь нажал на кнопку и программа выполнила что-то за 500 мсек вместо 250 мсек как обычно, то пользователю сложно увидеть разницу. Однако в случаях когда выполнялся какой-то итеративный, длительный процесс падение производительности было очень даже заметным. Разница в скорости доходила до 70%. Т.е. например программа делает множественные запросы к БД. Нативная за некий промежуток времени успевала сделать N запросов, .NET-овская делала то-же количество запросов за промежуток времени в 1.7 раза больший. Измерения проводились ещё на первой версии .NET Framework, сейчас ситуация может измениться, но разница всё равно видна.
 

Serge

Ословед
Тут дело не в языке а в среде .NET. Доводилось проводить тесты по быстродействию, т.е. бралась нативная программа реализующая некий алгоритм, потом данный алгоритм реализовывался под .NET. Падение производительности имело место всегда, т.е. не разу .NET программа не работала быстрее нативной. Естественно, если пользователь нажал на кнопку и программа выполнила что-то за 500 мсек вместо 250 мсек как обычно, то пользователю сложно увидеть разницу. Однако в случаях когда выполнялся какой-то итеративный, длительный процесс падение производительности было очень даже заметным. Разница в скорости доходила до 70%. Т.е. например программа делает множественные запросы к БД. Нативная за некий промежуток времени успевала сделать N запросов, .NET-овская делала то-же количество запросов за промежуток времени в 1.7 раза больший. Измерения проводились ещё на первой версии .NET Framework, сейчас ситуация может измениться, но разница всё равно видна.
Я видел противоположные результаты тестов. Думаю, все зависит от железа, по аналогии с Вистой - на старом железе тормозит, на современном - работает быстрее ХР.
 
У кого-нибудь есть такая книга по c#, чтобы объяснение там было не с самых азов, а параллельно другому языку программирования (например, с++, который я изучал до недавного времени)?
Если есть, пожалуйста, выложите.
 
Сверху