Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

27.10.2009, 23:40
|
|
Постоянный
Регистрация: 08.04.2007
Сообщений: 853
Провел на форуме: 5812656
Репутация:
1540
|
|
C# 4.0
Вообще на ачатике как-то слабо освещалась тема нового .net, считаю что стоит создать какой-нибудь такой пост где все будут дрочить на новый .net
Наиболее понятно всё показано на схеме:
Хотел немного рассказать про использование DLR в C# 4.0 тут, был бы рад если вы тоже присоединились и отпостили что-нибудь интересное по теме.
Проще всего описать всё это дело примером:
Код:
static void Main(string[] args)
{
Console.WriteLine("Привет вам из C# 4.0!");
var a = "hello ";
var b = 2323;
dynamic c = a + b;
Console.WriteLine("Результат: {0}", c); //"hello 2323"
Console.ReadLine();
}
Клёво, да? Кроме крутых вычислений это очень сильно упрощает жизнь, когда используешь позднее связывание, и все объекты и их типы мешаются в кучу и в итоге всё имеет тип object
Последний раз редактировалось Rebz; 28.10.2009 в 18:25..
|
|
|

28.10.2009, 02:04
|
Регистрация: 29.05.2002
Сообщений: 1,793
Провел на форуме: 2050916
Репутация:
0
|
|
Сообщение от scrat
Клёво, да? Кроме крутых вычислений это очень сильно упрощает жизнь, когда используешь позднее связывание, и все объекты и их типы мешаются в кучу
И что клевого? Что все объекты мешаются в кучу?
Сообщение от scrat
и в итоге всё имеет тип object
Ага, и все в итоге тормозит безбожно.
|
|
|

28.10.2009, 02:10
|
|
Участник форума
Регистрация: 20.02.2009
Сообщений: 224
Провел на форуме: 5075819
Репутация:
274
|
|
Некому тут дрочить на нет 4 
|
|
|

28.10.2009, 07:00
|
|
Reservists Of Antichat - Level 6
Регистрация: 12.02.2006
Сообщений: 891
Провел на форуме: 1892597
Репутация:
836
|
|
>>Ага, и все в итоге тормозит безбожно.
имеешь в виду boxing/unboxing?
__________________
*********************************
*Я не волшебник ٩(๏̯͡๏)۶, только учусь...*
*********************************
Программы на заказ
Times to fly...
|
|
|

28.10.2009, 18:22
|
Регистрация: 29.05.2002
Сообщений: 1,793
Провел на форуме: 2050916
Репутация:
0
|
|
Сообщение от W!z@rD
>>Ага, и все в итоге тормозит безбожно.
имеешь в виду boxing/unboxing?
Во-первых боксинг, во-вторых динамическая типизация.
Не поленился, и протестировал пример который дал топикстартер:
Код:
DateTime now = DateTime.Now;
for (int i = 0; i < 1000000; i++)
{
var a = "hello ";
var b = 2323;
dynamic c = a + b;
}
Console.WriteLine(DateTime.Now - now);
now = DateTime.Now;
for (int i = 0; i < 1000000; i++)
{
string a = "hello ";
string b = "2323";
string c = a + b;
}
Console.WriteLine(DateTime.Now - now);
Console.ReadLine();
Резлультат выполнения:
00:00:00.4687500
00:00:00.0937500
То есть статическая типизация работает почти в 5 раз быстрее чем динамическая ...
|
|
|

28.10.2009, 19:48
|
|
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
Провел на форуме: 3008839
Репутация:
1502
|
|
Algol, а ты оптимизацию не забыл отрубить? а то 00:00:00.0937500 - как-то совсем нереально смотрится
__________________
Bedankt euch dafür bei euch selbst.
H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ
|
|
|

28.10.2009, 23:13
|
Регистрация: 29.05.2002
Сообщений: 1,793
Провел на форуме: 2050916
Репутация:
0
|
|
Сообщение от desTiny
Algol, а ты оптимизацию не забыл отрубить? а то 00:00:00.0937500 - как-то совсем нереально смотрится
Это без оптимизации.
И почему нереально? Одна десятая секунды это не так-то и мало.
|
|
|

28.10.2009, 23:25
|
|
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
Провел на форуме: 3008839
Репутация:
1502
|
|
для миллиона объединений строк - вообще не очень )
Вот то же на сях с плюсами и без:
Код:
#include "windows.h"
#include "string.h"
#include <string>
#include <iostream>
using namespace std;
#define st __int64 rrtr = GetTickCount();
#define et rrtr=GetTickCount()-rrtr; \
/*if(rrtr>1){ __asm{int 3};*/ cout << rrtr <<endl;//}
int main(){
{
st
for (int i = 0; i < 1000000; i++)
{
string a = "hello ";
string b = "2323";
string c = a + b;
}
et
}
{
st
for (int i = 0; i < 1000000; i++)
{
char a[] = "hello ";
char b[] = "2323";
int l1 = strlen(a), l2 = strlen(b);
char *c = (char *)malloc(l1+l2+1);
strcpy(c,a);
strcat(c,b);
free(c);
}
et
}
int a;
cin >> a;
return 0;
}
вывод:
1407
1344
(на чистых сях такой код получился в результате постепенного улучшения)
с оптимизацией так (видимо, там таки что-то повырезано):
453
922
но чтобы на .NET было во столько раз быстрее..
__________________
Bedankt euch dafür bei euch selbst.
H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ
|
|
|

29.10.2009, 04:20
|
Регистрация: 29.05.2002
Сообщений: 1,793
Провел на форуме: 2050916
Репутация:
0
|
|
Ну вот промежуточный код. Из него видно, что компилятор ничего не вырезает и чесно крутит цикл:
Код:
00000064 nop
string a = "hello ";
00000065 mov eax,dword ptr ds:[022C3098h]
0000006b mov dword ptr [ebp-4Ch],eax
string b = "2323";
0000006e mov eax,dword ptr ds:[022C309Ch]
00000074 mov dword ptr [ebp-50h],eax
string s = a + b;
00000077 mov edx,dword ptr [ebp-50h]
0000007a mov ecx,dword ptr [ebp-4Ch]
0000007d call 75CFC078
00000082 mov esi,eax
00000084 mov dword ptr [ebp-54h],esi
}
00000087 nop
for (int i = 0; i < 1000000; i++)
00000088 inc dword ptr [ebp-48h]
0000008b cmp dword ptr [ebp-48h],0F4240h
00000092 setl al
00000095 movzx eax,al
00000098 mov dword ptr [ebp-58h],eax
0000009b cmp dword ptr [ebp-58h],0
0000009f jne 00000064
|
|
|

29.10.2009, 19:54
|
|
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
Провел на форуме: 3008839
Репутация:
1502
|
|
Код:
string a = "hello ";
00000065 mov eax,dword ptr ds:[022C3098h]
0000006b mov dword ptr [ebp-4Ch],eax
string b = "2323";
0000006e mov eax,dword ptr ds:[022C309Ch]
00000074 mov dword ptr [ebp-50h],eax
^^ кхм  если строки "выделяются" так, тогда может быть  )
__________________
Bedankt euch dafür bei euch selbst.
H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|