🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.javascript
10 messages
10 total messages Started by zlotowinfo Tue, 29 Dec 2009 23:21
złożoność obliczeniowa
#49629
Author: zlotowinfo
Date: Tue, 29 Dec 2009 23:21
16 lines
1592 bytes
mam problem ze złożonością obliczeń
za jednym kliknięciem wykonuje


function zaokr(zaok){return parseInt(zaok*10)/10;}
function add0(cyfra,ile,ile2){cyfra=cyfra.toString();if(ile!=0){if(cyfra.indexOf('.')>=0){}else{cyfra+='.'}}ileteraz=cyfra.length-cyfra.indexOf('.')-1;for(add0licz=1;add0licz<=ile-ileteraz;add0licz++){cyfra+='0';}while(cyfra.length<ile2){cyfra=' '+cyfra;}return cyfra;}

zaokr - do pierwszego miejsca po przecinku
add0 - dodaje stringowi 0 na końcu by była liczba zawsze z dwoma miejscami, i dla porządku dodatkowo szerokość stringa do pisania w kolumnach np. textarea


-- 
http://zbanki.prv.pl - darmowe bankowanie
http://zlokaty.prv.pl - kalkulator lokat
http://zvoip.prv.pl - tanie voipowanie
Re: złożoność obliczeniowa
#49630
Author: Peter May
Date: Wed, 30 Dec 2009 07:29
16 lines
1767 bytes
W dniu 2009-12-30 00:21, zlotowinfo pisze:
>
> mam problem ze złożonością obliczeń
> za jednym kliknięciem wykonuje
>
>
> function zaokr(zaok){return parseInt(zaok*10)/10;}
> function add0(cyfra,ile,ile2){cyfra=cyfra.toString();if(ile!=0){if(cyfra.indexOf('.')>=0){}else{cyfra+='.'}}ileteraz=cyfra.length-cyfra.indexOf('.')-1;for(add0licz=1;add0licz<=ile-ileteraz;add0licz++){cyfra+='0';}while(cyfra.length<ile2){cyfra=' '+cyfra;}return cyfra;}
>
> zaokr - do pierwszego miejsca po przecinku
> add0 - dodaje stringowi 0 na końcu by była liczba zawsze z dwoma miejscami, i dla porządku dodatkowo szerokość stringa do pisania w kolumnach np. textarea

To teraz pytanie: a z czym masz problem?

-- 
Peter
Re: złożoność obliczeniowa
#49631
Author: zlotowinfo
Date: Wed, 30 Dec 2009 16:56
24 lines
2028 bytes
Użytkownik "Peter May" <peter.may@poczta.fm> napisał w wiadomości news:hhevlk$bff$1@atlantis.news.neostrada.pl...
>W dniu 2009-12-30 00:21, zlotowinfo pisze:
>>
>> mam problem ze złożonością obliczeń
>> za jednym kliknięciem wykonuje
>>
>>
>> function zaokr(zaok){return parseInt(zaok*10)/10;}
>> function add0(cyfra,ile,ile2){cyfra=cyfra.toString();if(ile!=0){if(cyfra.indexOf('.')>=0){}else{cyfra+='.'}}ileteraz=cyfra.length-cyfra.indexOf('.')-1;for(add0licz=1;add0licz<=ile-ileteraz;add0licz++){cyfra+='0';}while(cyfra.length<ile2){cyfra=' '+cyfra;}return cyfra;}
>>
>> zaokr - do pierwszego miejsca po przecinku
>> add0 - dodaje stringowi 0 na końcu by była liczba zawsze z dwoma miejscami, i dla porządku dodatkowo szerokość stringa do pisania w kolumnach np. textarea
> 
> To teraz pytanie: a z czym masz problem?
> 


z mocą obliczeniową użytkowników strony


-- 
http://zbanki.prv.pl - darmowe bankowanie
http://zlokaty.prv.pl - kalkulator lokat
http://zvoip.prv.pl - tanie voipowanie
Re: złożoność obliczeniowa
#49632
Author: fv
Date: Thu, 31 Dec 2009 10:02
23 lines
1517 bytes
zlotowinfo wrote:
> function zaokr(zaok){return parseInt(zaok*10)/10;}
> function add0(cyfra,ile,ile2){cyfra=cyfra.toString();if(ile!=0){if(cyfra.
(ciach)

Oooo stary... tyś to napisał? To jakiś koszmar...

> zaokr - do pierwszego miejsca po przecinku
> add0 - dodaje stringowi 0 na końcu by była liczba zawsze z dwoma miejscami, i dla porządku dodatkowo szerokość stringa do pisania w kolumnach np. textarea

OMG!

zaokrLiczba = Math.round(liczba);
add0 = liczba.toFixed(2);
szerokosc = ("" + liczba).length;

... nie wiem czy na 100% zadziała, ale ja bym szedł w tą stronę.

-- 
fv
Xbox gamertag: fastviper PL
Moto: Suzuki GSX 650F
Auto: Nissan Primera 2,0
Re: złożoność obliczeniowa
#49633
Author: zlotowinfo
Date: Thu, 31 Dec 2009 11:37
33 lines
1963 bytes
Użytkownik "fv" <fake@cybax.com> napisał w wiadomości news:hhhstr$91d$1@inews.gazeta.pl...
> zlotowinfo wrote:
>> function zaokr(zaok){return parseInt(zaok*10)/10;}
>> function add0(cyfra,ile,ile2){cyfra=cyfra.toString();if(ile!=0){if(cyfra.
> (ciach)
> 
> Oooo stary... tyś to napisał? To jakiś koszmar...
> 
>> zaokr - do pierwszego miejsca po przecinku
>> add0 - dodaje stringowi 0 na końcu by była liczba zawsze z dwoma miejscami, i dla porządku dodatkowo szerokość stringa do pisania w kolumnach np. textarea
> 
> OMG!
> 
> zaokrLiczba = Math.round(liczba);
to mi źle zaokragli
2.59 ma być 2,60 round daje 3

> add0 = liczba.toFixed(2);
to jest ok!!! liczba.toFixed(1)

> szerokosc = ("" + liczba).length;
> 
tp jeszcze oblukam

> ... nie wiem czy na 100% zadziała, ale ja bym szedł w tą stronę.
> 

dzięki :)

-- 
http://zbanki.prv.pl - darmowe bankowanie
http://zlokaty.prv.pl - kalkulator lokat
http://zvoip.prv.pl - tanie voipowanie
Re: złożoność obliczeniowa
#49634
Author: zlotowinfo
Date: Fri, 01 Jan 2010 17:36
16 lines
1510 bytes
Użytkownik "fv" <fake@cybax.com> napisał w wiadomości news:hhhstr$91d$1@inews.gazeta.pl...
> zaokrLiczba = Math.round(liczba);
> add0 = liczba.toFixed(2);
> szerokosc = ("" + liczba).length;
> 
> ... nie wiem czy na 100% zadziała, ale ja bym szedł w tą stronę.
> 

ciekawie wyglądało, ale nie chce działać
co przy max małej złożoności obliczeniowej 
doda potrzebną mi ilość spacji

-- 
http://zbanki.prv.pl - darmowe bankowanie
http://zlokaty.prv.pl - kalkulator lokat
http://zvoip.prv.pl - tanie voipowanie
Re: złożoność obliczeniowa
#49635
Author: A.L.E.C
Date: Wed, 06 Jan 2010 13:45
23 lines
1531 bytes
zlotowinfo wrote:

> ciekawie wyglądało, ale nie chce działać
> co przy max małej złożoności obliczeniowej 
> doda potrzebną mi ilość spacji

chodzi ci o ten fragment?

while(cyfra.length<ile2){cyfra=' '+cyfra;}

nie wiem czy da się to zrobić lepiej, to jest dość czytelne i proste ale 
można bez pętli:

var len = ile2 - cyfra.length;
var pad = new Array(len > 0 ? len : 0).join(' ');
cyfra = pad + cyfra;

p.s. czy nie uważasz że słowo "liczba" bardziej tutaj pasuje niż "cyfra"? ;)

-- 
Aleksander 'A.L.E.C' Machniak http://alec.pl gg:2275252
LAN Management System Developer http://lms.org.pl
Roundcube Webmail Developer http://roundcube.net
Re: złożoność obliczeniowa
#49636
Author: zlotowinfo
Date: Thu, 07 Jan 2010 09:31
33 lines
1632 bytes
więc pozostaje pętla, wyniki:

IE7 - pętla 1s, wersja z join 6s
SAPHARI - pętla 0s, wersja z join 1s
FIREFOX - pętla 1s, wersja z join 2s
OPERA - pętla 1s, wersja z join 2s



function r1(cyfra, ile2)
{
while(cyfra.length<ile2){cyfra=' '+cyfra;}
return cyfra;
}


function r2(cyfra, ile2)
{
var len = ile2 - cyfra.length;
var pad = new Array(len > 0 ? len : 0).join(' ');
cyfra = pad + cyfra;
return cyfra;
}


czas1 = new Date();czas1=czas1.getSeconds();
for(i=0;i<=700000;i++)
{
x=r1(1,20)
}

czas2 = new Date();czas2=czas2.getSeconds();
document.write(czas2-czas1);
Re: złożoność obliczeniowa
#49637
Author: Peter May
Date: Thu, 07 Jan 2010 13:25
50 lines
2115 bytes
W dniu 2010-01-07 10:31, zlotowinfo pisze:
> więc pozostaje pętla, wyniki:
>
> IE7 - pętla 1s, wersja z join 6s
> SAPHARI - pętla 0s, wersja z join 1s
> FIREFOX - pętla 1s, wersja z join 2s
> OPERA - pętla 1s, wersja z join 2s
>
>
>
> function r1(cyfra, ile2)
> {
> while(cyfra.length<ile2){cyfra=' '+cyfra;}
> return cyfra;
> }

Ja bym zoptymalizował to tak:

function r1(cyfra, ile2)
{
  var i = ile2.length;
  while(i--)
  {
   cyfra=' '+cyfra;
  }
  return cyfra;
}

Sprawdź po tym czas wykonania tego.

> function r2(cyfra, ile2)
> {
> var len = ile2 - cyfra.length;
> var pad = new Array(len>  0 ? len : 0).join(' ');
> cyfra = pad + cyfra;
> return cyfra;
> }
>
>
> czas1 = new Date();czas1=czas1.getSeconds();
> for(i=0;i<=700000;i++)
> {
> x=r1(1,20)
> }
>
> czas2 = new Date();czas2=czas2.getSeconds();
> document.write(czas2-czas1);

-- 
Peter
Re: złożoność obliczeniowa
#49638
Author: zlotowinfo
Date: Mon, 11 Jan 2010 11:54
26 lines
1812 bytes
Użytkownik "Peter May" <peter.may@poczta.fm> napisał w wiadomości news:hi4ng7$8kd$1@atlantis.news.neostrada.pl...
> Ja bym zoptymalizował to tak:
> 
> function r1(cyfra, ile2)
> {
>  var i = ile2.length;
>  while(i--)
>  {
>   cyfra=' '+cyfra;
>  }
>  return cyfra;
> }
> 
użycie dodatkowego przypisania sprawiło że kod:

<script>for(i=0;i<=850000;i++){x=r1(1,10)}</script>
<script>for(i=0;i<=850000;i++){x=r1(1,10)}</script>
<script>for(i=0;i<=850000;i++){x=r1(1,10)}</script>

z propozycją 1 wykonywał 5-6 sek
z propozycją 3 6-7 sek

-- 
http://zbanki.prv.pl - darmowe bankowanie
http://zlokaty.prv.pl - kalkulator lokat
http://zvoip.prv.pl - tanie voipowanie
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads