|
Тема |
Re: Какво трябва да се оптимизира? [re: Чaвдap] |
|
Автор |
ro6avia (усер френдли) |
|
Публикувано | 08.06.05 16:14 |
|
|
Всъщност не си ме разбрал
знака & е за бинарна операция
обяснявам ти го с цифри :
0 -> 0
1 -> 1
10 -> 2
11 -> 3
100 -> 4
101 -> 5
и т.н.
в твоя случай може да имаш максимално записано число 15 (а не 15 цифри)
когато е да кажем 3 при извършване на операцията & резултата е следния :
1 & 5 = 1
2 & 5 = 0
4 & 5 = 1
8 & 5 = 0
или бинарно :
0001 & 0101 -> 1
0010 & 0101 -> 0
0100 & 0101 -> 1
1000 & 0101 -> 0
това ти показва дали дадено число се съдържа в друго в бинарното му представяне (е не можах да го измисля по-мъдро).
Няма НИКАКВА нужда от превръщане на цифрата в интерфейс, а просто се ползва номера на интерфейса като степен на двойката.
В случая :
интерфейс 1 -> 2 на степен 0 = 1
интерфейс 2 -> 2 на степен 1 = 2
интерфейс 3 -> 2 на степен 2 = 4
интерфейс 4 -> 2 на степен 3 = 8
На мен ми е по-лесно като че ли да броя от нула нагоре за това и започвам с 2 на степен нулева, но ако на теб ти е трудно остави основата и увеличи степента с + 1
интерфейс 1 -> 2 на степен 1 = 2
интерфейс 2 -> 2 на степен 2 = 4
интерфейс 3 -> 2 на степен 3 = 8
интерфейс 4 -> 2 на степен 4 = 16
Тогава ще имаш максимална стойност 30 за полето с интерфейси и логиката ще продължи да е същата.
Просто ти трябва проверяваш дали съобщението е за този интерфейс със
полето_за_указване на интерфейса & 2 на степен номера на интерфейса.
И нито кода ще стане сложен, нито ще се увеличи възможноста за грешка. Всеки интерфейс ще си търси нещата с бинарно &.
За релационните бази данни си прав, НО ....
тук има едно голямо НО
защо ти е нова допълнителна таблица ? защо да го караш да чете от две таблици с inner, left или какъвто си искаш join, като както е добре известно числовите операции са едни от най бързите.
Ако искаш ще ти изровя линкове с обяснения за бинарната математика, какво е AND, OR, XOR и какво може да се направи с тях.
root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
|
| |
|
|
|