var arr = [], arrLng = 6000, out=[]; for (var i = 0; i < arrLng; i++) { arr.push(parseInt(Math.random()*arrLng)) } //====== Deff ========= var st = +new Date(), bound = ','; out=[]; var tststr = bound + arr.join(bound+bound) + bound; for (var i = 0; i < arr.length; i++) { var t = bound +arr[i] + bound; if(tststr.indexOf(t)==tststr.lastIndexOf(t))out.push(arr[i]) } var work = +new Date()-st; alert('Deff ='+work+'\n\n'+out) //===== danik ========== var st = +new Date(); out=[]; for (var i = 0; i < arr.length; i++) { var item = arr[i]; if (arr.indexOf(item, i + 1) === -1 && (i === 0 || arr.lastIndexOf(item, i - 1) === -1)) out.push(item); } var work = +new Date()-st; alert('danik ='+work+'\n\n'+out) //===== рони ========== var st = +new Date(); out=[]; arr.sort(function (a, b) { return a - b; }); for (var i = 0; i < arr.length; i++) { var item = arr[i]; if (item != arr[i - 1] && arr[i + 1] != item) out.push(item); } var work = +new Date()-st; alert('рони ='+work+'\n\n'+out) В Опере 12.6 и Ие быстрее первая метода, в Хроме и Мозилле - вторая |
Deff, обновил твой вариант у себя в тесте. Все-равно твой код самый медленный.
|
Цитата:
Ну да ладно, из-за академического интереса ради, разве что. |
Цитата:
А в опере да, быстрей, но там разница в считанные проценты. Вобще, опера тормозит жутко. |
Походу в WEBkit работа с массивами уже переведена на аппаратный уровень
|
Цитата:
И чот твой тест (пост 9) у меня из топика не запускается ================================================ И вообще, по сравнению с рони, мы все в жопе.. (правдо меняется порядок элементов, хотя наверно и при восстановлении старого порядка следования всё одно выиграет |
Цитата:
Цитата:
А вообще, прикольно видеть, когда на такую, казалось бы, простую задачку возникает целая куча решений. Коллективный мозговой штурм - это и для ума полезно, и для души приятно. :) |
Гы, нашел , где лажа ![]() |
Deff, с какой это стати не учитываешь время на создание строки?
|
Цитата:
теперь походу в в WEBkit работа с массивами уже переведена на аппаратный уровень В опере 12.6 и сейчас чуть быстрее danik.js |
Часовой пояс GMT +3, время: 11:51. |