PDA

Просмотр полной версии : Как реализовать систему раздачи id как у функции SetInterval


Rzer
01.01.2008, 17:04
Как реализовать систему раздачи id как у функции SetInterval. Собственно это и есть вопрос. Хотелось бы чтобы номера выдавались динамически тоесть если уже есть номера 1 2 3 4, то после удаления 2 номера - функция снова бы выдавала 2 - Чтобы не возникало переполнения номеров со временем. Подскажите, пожалуйста.

Интересует аспект производительности, так как номеров будет около 2000 и всё время бегать циклом в поиске нужного номера будет затратным по ресурсам.

Ostgur
01.01.2008, 17:14
по-моему, никак, а если писать такую функцию самому(которая бы делал переназначения), то она ещё больше грузить будет, чем перебор.

iNils
01.01.2008, 17:55
если уже есть номера 1 2 3 4, то после удаления 2 номера - функция снова бы выдавала 2 - Чтобы не возникало переполнения номеров со временем. О каком переполнении идет речь? Вам миллионов мало?

udaaff
02.01.2008, 09:07
var idArr = new Array();
var emptyPlaces = new Array();

function register(obj) {

if(emptyPlaces.length > 0) {
var num = emptyPlaces.pop();
idArr[num] = obj;
return num;
} else {
idArr.push(obj);
return idArr.length - 1;
}
}

function unregister(id) {
idArr[id] = undefined;
emptyPlaces.push(id);
}

enepx
04.01.2008, 00:35
возьмите опыт из БД: пусть "2" было всего раз и больше никогда не будет, ничего страшного, переполнения все равно не достигните. Просто сделайте статическую переменную в классе, которая в конструкторе будет инкрементиться - это и будет Вашим ИД. Если важна производительность, то это Ваш выход имхо.