Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
V := +2*C.C[SFX+S1]/DT-2*C.C[SFX+S4]/DT+1*C.C[SFXY+S1]/(DT*DU)+1*C.C[SFXY+S4]/(DT*DU);
F := F+V*T1*U3;
FX := FX+1*V*T0*U3*DT;
FY := FY+3*V*T1*U2*DU;
FXY := FXY+3*V*T0*U2*DT*DU;
V := -3*C.C[SF+S1]+3*C.C[SF+S2]-2*C.C[SFX+S1]/DT-1*C.C[SFX+S2]/DT;
F := F+V*T2*U0;
FX := FX+2*V*T1*U0*DT;
V := -3*C.C[SFY+S1]/DU+3*C.C[SFY+S2]/DU-2*C.C[SFXY+S1]/(DT*DU)-1*C.C[SFXY+S2]/(DT*DU);
F := F+V*T2*U1;
FX := FX+2*V*T1*U1*DT;
FY := FY+1*V*T2*U0*DU;
FXY := FXY+2*V*T1*U0*DT*DU;
V := +9*C.C[SF+S1]-9*C.C[SF+S2]+9*C.C[SF+S3]-9*C.C[SF+S4]+6*C.C[SFX+S1]/DT+3*C.C[SFX+S2]/DT-3*C.C[SFX+S3]/DT-6*C.C[SFX+S4]/DT+6*C.C[SFY+S1]/DU-6*C.C[SFY+S2]/DU-3*C.C[SFY+S3]/DU+3*C.C[SFY+S4]/DU+4*C.C[SFXY+S1]/(DT*DU)+2*C.C[SFXY+S2]/(DT*DU)+1*C.C[SFXY+S3]/(DT*DU)+2*C.C[SFXY+S4]/(DT*DU);
F := F+V*T2*U2;
FX := FX+2*V*T1*U2*DT;
FY := FY+2*V*T2*U1*DU;
FXY := FXY+4*V*T1*U1*DT*DU;
V := -6*C.C[SF+S1]+6*C.C[SF+S2]-6*C.C[SF+S3]+6*C.C[SF+S4]-4*C.C[SFX+S1]/DT-2*C.C[SFX+S2]/DT+2*C.C[SFX+S3]/DT+4*C.C[SFX+S4]/DT-3*C.C[SFY+S1]/DU+3*C.C[SFY+S2]/DU+3*C.C[SFY+S3]/DU-3*C.C[SFY+S4]/DU-2*C.C[SFXY+S1]/(DT*DU)-1*C.C[SFXY+S2]/(DT*DU)-1*C.C[SFXY+S3]/(DT*DU)-2*C.C[SFXY+S4]/(DT*DU);
F := F+V*T2*U3;
FX := FX+2*V*T1*U3*DT;
FY := FY+3*V*T2*U2*DU;
FXY := FXY+6*V*T1*U2*DT*DU;
V := +2*C.C[SF+S1]-2*C.C[SF+S2]+1*C.C[SFX+S1]/DT+1*C.C[SFX+S2]/DT;
F := F+V*T3*U0;
FX := FX+3*V*T2*U0*DT;
V := +2*C.C[SFY+S1]/DU-2*C.C[SFY+S2]/DU+1*C.C[SFXY+S1]/(DT*DU)+1*C.C[SFXY+S2]/(DT*DU);
F := F+V*T3*U1;
FX := FX+3*V*T2*U1*DT;
FY := FY+1*V*T3*U0*DU;
FXY := FXY+3*V*T2*U0*DT*DU;
V := -6*C.C[SF+S1]+6*C.C[SF+S2]-6*C.C[SF+S3]+6*C.C[SF+S4]-3*C.C[SFX+S1]/DT-3*C.C[SFX+S2]/DT+3*C.C[SFX+S3]/DT+3*C.C[SFX+S4]/DT-4*C.C[SFY+S1]/DU+4*C.C[SFY+S2]/DU+2*C.C[SFY+S3]/DU-2*C.C[SFY+S4]/DU-2*C.C[SFXY+S1]/(DT*DU)-2*C.C[SFXY+S2]/(DT*DU)-1*C.C[SFXY+S3]/(DT*DU)-1*C.C[SFXY+S4]/(DT*DU);
F := F+V*T3*U2;
FX := FX+3*V*T2*U2*DT;
FY := FY+2*V*T3*U1*DU;
FXY := FXY+6*V*T2*U1*DT*DU;
V := +4*C.C[SF+S1]-4*C.C[SF+S2]+4*C.C[SF+S3]-4*C.C[SF+S4]+2*C.C[SFX+S1]/DT+2*C.C[SFX+S2]/DT-2*C.C[SFX+S3]/DT-2*C.C[SFX+S4]/DT+2*C.C[SFY+S1]/DU-2*C.C[SFY+S2]/DU-2*C.C[SFY+S3]/DU+2*C.C[SFY+S4]/DU+1*C.C[SFXY+S1]/(DT*DU)+1*C.C[SFXY+S2]/(DT*DU)+1*C.C[SFXY+S3]/(DT*DU)+1*C.C[SFXY+S4]/(DT*DU);
Очевидно, что да. И это ни разу не говнокод. Возможно, это можно заоптимизировать. Но, если, блджад, формула на три страницы, как она должна выглядеть в реальности?
имхо, лучше полностью копировать такие замысловатые формулы из учебника, чем пытать их оптимизировать, потому что оптимизация таких замысловатых формул может повлечь ошибки, которые хрен отыщешь. все надеюсь помнят крушение американской ракеты из-за ошибки переноса физических формул с тетради в комп. чёрточку в одном месте забыли. и то это при чистом копировании. а если будет ещё и "самодеятельность"?
Вы это скажите тому несчастному кодеру, которому дали задачу оптимизировать данную фигню, чтобы она работала, скажем, раз в 10 быстрей.
Иногда оптимизируют от нефиг делать, иногда - в силу суровой необходимости.
А чтобы ракеты не падали - тестировать надо нормально.
хз, тут например много раз повторяется присвоение одной и той же переменной.
V := -3*C.C[SF+S1]+3*C.C[SF+S2]-2*C.C[SFX+S1]/DT-1*C.C[SFX+S2]/DT;
...
V := -3*C.C[SFY+S1]/DU+3*C.C[SFY+S2]/DU-2*C.C[SFXY+S1]/(DT*DU)-1*C.C[SFXY+S2]/(DT*DU);
как минимум у каждой такой операции видимо есть смысл, и как минимум можно было бы проставить коменты. а еще вычисление каждой херни видимо можно было обозвать завернув в функцию.
типа V := calculateSomething(a, b, c) уже было бы куда понятнее.
На сайте с примерами реализации алгоритмов по моему куда важнее донести смысл алгоритма, чем заоптимайзить его выполнение с 200 мс до 174 (к примеру)
Настоящий физик на любом языке программирования напишет программу на Фортране. 🙂
Была у меня давно книжка по компьютерной графики с примерами на Фортране - один в один. 🙂 Алгоритмы хитрые - программы соответствующие.
Иногда оптимизируют от нефиг делать, иногда - в силу суровой необходимости.
А чтобы ракеты не падали - тестировать надо нормально.
>Delphi
>оптимизировать
забавно))
так что с вероятностью 99% - не говнокод!
Оптимизировать формулы себе дороже
V := -3*C.C[SF+S1]+3*C.C[SF+S2]-2*C.C[SFX+S1]/DT-1*C.C[SFX+S2]/DT;
...
V := -3*C.C[SFY+S1]/DU+3*C.C[SFY+S2]/DU-2*C.C[SFXY+S1]/(DT*DU)-1*C.C[SFXY+S2]/(DT*DU);
как минимум у каждой такой операции видимо есть смысл, и как минимум можно было бы проставить коменты. а еще вычисление каждой херни видимо можно было обозвать завернув в функцию.
типа V := calculateSomething(a, b, c) уже было бы куда понятнее.
На сайте с примерами реализации алгоритмов по моему куда важнее донести смысл алгоритма, чем заоптимайзить его выполнение с 200 мс до 174 (к примеру)
так что учитывая происхождение, 100% говнокод
особый такой вот случай.
капитан очевидность как бы намекает
Решить!!!
http://www.govnokod.ru/2822
Была у меня давно книжка по компьютерной графики с примерами на Фортране - один в один. 🙂 Алгоритмы хитрые - программы соответствующие.