- 1
- 2
- 3
- 4
XmlNodeList list = xdoc.GetElementsByTagName("Customer");
for (int i = 0; i < list.Count; i++)
{
XmlElement cl = (XmlElement)xdoc.GetElementsByTagName("Customer")[i];
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+128
XmlNodeList list = xdoc.GetElementsByTagName("Customer");
for (int i = 0; i < list.Count; i++)
{
XmlElement cl = (XmlElement)xdoc.GetElementsByTagName("Customer")[i];
Написано расовым индусом.
http://www.c-sharpcorner.com/UploadFile/vimalkandasamy/Xml03032009055848AM/Xml.aspx - чисто индусский бложик. Там много подобного.
+154
<?php
$temp='Исходная строка';
$search='Поисковый запрос';
$result=str_ireplace($search, $temp);
if ($result!=$temp)return true;
else
return false;
?>
Вот так я проверял на наличие подстроки в строке! *ROFL*
+146
public class HelloWorld {
public static void main(String[] args) {
HelloWorld hw = new HelloWorld();;;;;;;;;;;;;;;;;;;;;;;;;
hw.doHw();
}
public void doHw()
{
System.out.println("Hello, world");
}
}
Не совсем понимаю что это, но javac HelloWorld.java не выдал никаких ошибок. Возможно кто-то про это писал но все же..
+139
int x = 0;
for (i = 4; i <= 31; i++ && x++)
if (code.l & (1 << i))
{
if (x == 0)
{
info.bios_info->characteristics = (char**) malloc (sizeof (char*));
info.bios_info->characteristics[x] = characteristics[i-3];
}else
{
realloc (info.bios_info->characteristics, (sizeof(char*) * x));
info.bios_info->characteristics[x] = characteristics[i - 3];
}
}
realloc и массив указателей типа char*
http://www.linux.org.ru/forum/development/6786393
+151
void f_ai(intrusive_ptr<serial> i);
//...
static serial ai;
serial* ii=&ai;
//...
f_ai(ii);
Компилируется, а потом грохается. С++ такой Си...
+102
const n = 50;
type vec = array [1..n*4] of system.word;
function vprod(const a, b: vec): Cardinal;
var i: longInt;
begin
result := 0;
for i := 1 to high(vec) do inc(result, a[i] * b[i]);
end;
function vprod_asm1(const a, b: vec): Cardinal; assembler;
asm
push ebx
push ecx
push edx
push esi
push edi
xor ebx, ebx
mov ecx, n*4
mov esi, a
mov edi, b
xor eax, eax
cld
@@l:
mov ax, word ptr [esi]
lea esi, [esi+2]
mul word ptr [edi]
lea edi, [edi+2]
shl edx, 16
mov dx, ax
add ebx, edx
dec ecx
jne @@l
mov eax, ebx
pop edi
pop esi
pop edx
pop ecx
pop ebx
end;
function vprod_asm2(const a, b: vec): Cardinal; assembler;
asm
push ebx
push ecx
push edx
push esi
push edi
xor ebx, ebx
mov ecx, n*4
mov esi, a
mov edi, b
xor eax, eax
cld
@@l:
lodsw
movzx edx, WORD PTR [edi]
imul edx
lea edi, [edi+2]
add ebx, eax
loop @@l
mov eax, ebx
pop edi
pop esi
pop edx
pop ecx
pop ebx
end;
function vprod_mmx (const a, b: vec): Cardinal; assembler;
var muls: record l, h: Cardinal end;
asm
push ebx
push ecx
push esi
push edi
mov ecx, n
mov esi, a
mov edi, b
xor eax, eax
lea ebx, muls
@@l:
db $0F,$6F,$06 // movq mm0, [esi]
db $0F,$F5,$07 // pmaddwd mm0, [edi]
lea esi, [esi+8]
db $0F,$7F,$03 // movq [ebx], mm0
lea edi, [edi+8]
add eax, [ebx]
add eax, [ebx+4]
loop @@l
db $0F,$77 // emms
pop edi
pop esi
pop ecx
pop ebx
end;
По просьбам трудящихся публикую модифицированную версию примера MMXTEST.PAS из комплекта компилятора TMT Pascal. Программа находит скалярное произведение двух векторов. Далее должен быть основной блок с фрагментами типа for i := 1 to 100000 do vprod(a, b); , которые я не стал публиковать ввиду ограничений. Функция vprod_asm1 — почти оригинальный код TMT, функция vprod_asm2 — мой оптимизированный вариант. Результаты запуска на двух машинах (таймер получал по RDTSC):
AMD K6-2-333 МГц, FSB 66 МГц.
Delphi7:
Pascal = 0.550 sec.
Asm x86 (original) = 1.034 sec.
Asm x86 (optimized) = 0.490 sec.
Asm MMX = 0.130 sec.
С директивой $O- первый результат 0.853 sec.
Замена loop на dec ecx + jne увеличивает результаты на 0,015 c.
FPC:
Pascal = 1.387 sec.
Asm x86 (original) = 1.199 sec.
Asm x86 (optimized) = 0.510 sec.
Asm MMX = 0.124 sec.
TMT:
Pascal = 0.914 sec.
Asm x86 (original) = 1.037 sec.
Asm x86 (optimized) = 0.494 sec.
Asm MMX = 0.126 sec.
VP:
Pascal = 0.520 sec.
Asm x86 (original) = 1.033 sec.
Asm x86 (optimized) = 0.493 sec.
Asm MMX = 0.146 sec.
С директивами $Q+,R+ первый результат 1.032 sec.
С директивой $Speed- первый результат 0.731 sec.
------------------------------
Celeron 1,86 ГГц, FSB 533 МГц.
Delphi7:
Pascal = 0.025 sec.
Asm x86 (original) = 0.091 sec.
Asm x86 (optimized) = 0.082 sec.
Asm MMX = 0.044 sec.
TMT:
Pascal = 0.109 sec.
Asm x86 (original) = 0.087 sec.
Asm x86 (optimized) = 0.079 sec.
Asm MMX = 0.042 sec.
+147
var i = new Array(new Array());
i[0][0] = 'num';
alert(i);
матрица в js
+165
temp = new LIST;
temp = ptr->next;
ptr->next = ptr;
ptr = temp;
Так меняют указатели местами при сортировке списка.
+125
if ((pen == true) || (brush == true))
{
mousePath = new System.Drawing.Drawing2D.GraphicsPath();
myPaths.Add(mousePath);
}
else
if ((rectangle == true) && (e.X > 0) && (e.Y > 0) && (e.X < pictureBox1.Width)
&& (e.Y < pictureBox1.Height))
{
if (Border == true)
{
PenForBrush.Width = trackBar1.Value;
if ((e.X >= rectX) && (e.Y >= rectY))
{
g.DrawRectangle(PenForBrush, rectX, rectY, e.X - rectX, e.Y - rectY);
}
else
if ((e.X <= rectX) && (e.Y <= rectY))
{
Rectangle R = new Rectangle(e.X, e.Y, rectX - e.X, rectY - e.Y);
g.DrawRectangle(PenForBrush, R);
}
else
if ((e.X <= rectX) && (e.Y >= rectY))
{
Rectangle R = new Rectangle(e.X, rectY, rectX - e.X, e.Y - rectY);
g.DrawRectangle(PenForBrush, R);
}
else
if ((e.X >= rectX) && (e.Y <= rectY))
{
Rectangle R = new Rectangle(rectX, e.Y, e.X - rectX, rectY - e.Y);
g.DrawRectangle(PenForBrush, R);
}
}
else if (FillBorder == true)
{
else
if ((e.X <= rectX) && (e.Y <= rectY))
{
Rectangle R = new Rectangle(e.X + width, e.Y + width,
rectX - e.X - trackBar1.Value, rectY - e.Y - trackBar1.Value);
g.FillRectangle(FillBrush, R);
g.DrawRectangle(PenForBrush, e.X, e.Y, rectX - e.X, rectY - e.Y);
}
else
if ((e.X <= rectX) && (e.Y >= rectY))
{
Rectangle R = new Rectangle(e.X + width, rectY + width,
rectX - e.X - trackBar1.Value, e.Y - rectY - trackBar1.Value);
g.FillRectangle(FillBrush, R);
g.DrawRectangle(PenForBrush, e.X, rectY, rectX - e.X, e.Y - rectY);
}
else
if ((e.X >= rectX) && (e.Y <= rectY))
{
Rectangle R = new Rectangle(rectX + width, e.Y + width,
e.X - rectX - trackBar1.Value, rectY - e.Y - trackBar1.Value);
g.FillRectangle(FillBrush, R);
g.DrawRectangle(PenForBrush, rectX, e.Y, e.X - rectX, rectY - e.Y);
}
}
else if ((mark == true) && (!IsMarkPaint)
&& (e.X - distance1 > 0) && (e.Y - distance2 > 0)
&& (e.X + distance3 < pictureBox1.Width) && (e.Y + distance4 < pictureBox1.Height))
{
if (Count == 0)
{
try
{
Rectangle R = new Rectangle(PreviousMarkPoint.X, PreviousMarkPoint.Y,
MarkRectangle.Width, MarkRectangle.Height);
SolidBrush s = new SolidBrush(Color.White);
g.FillRectangle(s, R);
Bitmap temp = new Bitmap(pictureBox1.Image.Width, pictureBox1.Image.Height);
temp = (Bitmap)pictureBox1.Image;
ImageClone = temp.Clone(MarkRectangle, PixelFormat.Format16bppArgb1555);
}
catch { }
if (myImages.Count > 35)
{
myImages.RemoveAt(0);
ImageNames.RemoveAt(0);
}
Графический редактор
+146
Как известно Страуструп для своей диссертации написал на языке Симула программу расчета данных.
Причем программа была написана очень быстро и легко, что весьма порадовало Б.С. Но вот дальше
обнаружилось, что скорость работы этой программы крайне мала. Как говорят, ее не хватало даже
для того, чтобы насчитать необходимые данные к моменту защиты дисертации. Эффект этого произвел
на (неокрепшие ) мозги г-на Страуструпа был ужасен. Но вместо визита к психотерапевту
он решил создать свой язык, который бы совмещал в себе высокую скорость разработки (от Симулы)
и высокую скорость выполнения (от С). Т.е. была поставлена задача написания языка C++, во-первых,
объектно-ориентированного (в понимании Б.С.), а во-вторых, очень эффективного (в плане скорости
выполнения скомпилированного кода).
Статья:
http://steps3d.narod.ru/tutorials/c-minus-minus.html
Наш ответ:http://dshevchenko.biz/content/мой-ответ-алексею-викторовичу