Seneste forumindlæg
Køb / Salg
 * Uofficiel Black/White liste V3
Login / opret bruger

Forum \ Programmering og webdesign \ Programmering
Denne tråd er over 6 måneder gammel

Er du sikker på, at du har noget relevant at tilføje?

PhP er for svagt, alternativ?

Af Giga Supporter MrAwesome | 28-01-2014 03:00 | 2237 visninger | 13 svar, hop til seneste
Jeg står og skal programmere en Modulos lommeregner.... Problemet er at PhP halter efter 17 cifre. Og jeg er ude i forløkker hvor jeg trækker variable k = 100 fra variable m=42E150 hvor den skal stoppe når m er mindre end 100. Problemet ligger i at php siden går i stå og siger timed out efter 30 sekundere. Hvad er alternativet?
--
#1
TommyB
Giga Supporter
28-01-2014 06:31

Rapporter til Admin
Du kan omgå de 30 sek med set time limit http://dk1.php.net[...] Men hvad computer kører du scriptet på ? Og nu har jeg ikke prøvet, men hvis du kunne bruge den indbyggede modelus ville det være langt hurtigere.
--
Indholdet af dette indlæg er blevet redigeret af NSA.
#2
Thomas Jensen
Maxi Supporter
28-01-2014 07:02

Rapporter til Admin
kunne jo være at det er opsætningen af din kode der halter og betyder den bliver langsom, koder selv i ASP.NET VB/C# og PHP og PHP fejler INTET, men det gør manges koder fordi de sættes helt forkert op eller fordi man laver unødvendige call's eller laver koder der fylder 20 linjer som kan skæres ned til 10 (som eksp.)
--
GA-EX58A-UD3R|I7 920 D0|Hydro H70|12GB Corsair 8-8-8-24|2xEAH5870 1GB|Cooler Master CM 690 Pure.
#3
TommyB
Giga Supporter
28-01-2014 07:12

Rapporter til Admin
Jeg er helt med Thomas der, PHP er alt andet end svagt :) - Det er dog heller ikke MathLab :) Men Modulus ? du behøver ikke en forløkke, det er da aaaalt for langsomt, ligemeget hvad sprog. fx. k = 34 og tal = 123456. rest = tal - (floor(tal/k) * k); rest er lig 2
--
Indholdet af dette indlæg er blevet redigeret af NSA.
#4
TommyB
Giga Supporter
28-01-2014 07:14

Rapporter til Admin
Nå ja, og i #0 eksempel hvor du bruger notationer, så vil en modulus 100 næsten altid gi nul, man klipper jo alle de mindre betydlige cifre væk. m=42E150 = 42000000000000000..... Så det er rimelig ubrugligt. Edit: Jeg mener at alle integers over de 14 cifre automatisk bliver floats/notation, så der er ikke så meget at gøre der.
--
Indholdet af dette indlæg er blevet redigeret af NSA.
#5
TommyB
Giga Supporter
28-01-2014 07:18

Rapporter til Admin
BC Math er til at håndtere rigtig store tal. Se her : http://php.net[...] bcmod er modulus med meget store tal.
--
Indholdet af dette indlæg er blevet redigeret af NSA.
#6
TommyB
Giga Supporter
28-01-2014 07:31

Rapporter til Admin
Eksempel : http://pastebin.com[...] Og tager langt under 0.01 sekund at eksekvere. Og er testet OK med over 200 cifre.
--
Indholdet af dette indlæg er blevet redigeret af NSA.
#7
bQnne
Guru
28-01-2014 10:02

Rapporter til Admin
#6 Han ville lave en lommeregner - ikke bruge en. Synes dit svar i #3 giver bedre mening. Det er uendeligt mange gange hurtigere og pænere end for-loops.
--
http://tinyCode.dk[...]
#8
HenrikM
Guru
28-01-2014 10:07

Rapporter til Admin
#0: de 17 cifre er ikke php's problem med generel ieee double precision, altså hvad cpu'en er i stand til direkte. Ellers skal man have specialbiblioteker til at regne med højere præcision over flere instruktioner. #1: det har ikke noget med timeout at gøre. Problemet er at 42e150-100 = 42e150, så den bliver aldrig færdig. (men han skal naturligvis heller ikke forsøge at lave modulus på den måde, det vil nok tage sin tid ;)
--
#9
TommyB
Giga Supporter
28-01-2014 10:21

Rapporter til Admin
Men hvis han forsøger at lave en lommeregner, så skal han ikke beskylde PHP for at være "svagt"... han kunne bare bruge der ordentligt :)
--
Indholdet af dette indlæg er blevet redigeret af NSA.
#10
bQnne
Guru
28-01-2014 10:25

Rapporter til Admin
#9 Man ville sandsynligvis kunne gøre det i Brainfuck, hvis man gjorde det ordenligt. ;)
--
http://tinyCode.dk[...]
#11
MrAwesome
Giga Supporter
28-01-2014 13:15

Rapporter til Admin
Mange tak all
--
#12
MrAwesome
Giga Supporter
28-01-2014 13:36

Rapporter til Admin
Er der en metode så jeg kan skrive a^6 istedet for a*a*a*a*a*a*a Fandt svaret http://www.w3schools.com[...]
--
#13
TommyB
Giga Supporter
28-01-2014 15:40

Rapporter til Admin
istedet for w3schools, så hvorfor ikke søge på http://php.net[...] istedet ? De har rigtig god manual. Math Functions : http://dk1.php.net[...] .
--
Indholdet af dette indlæg er blevet redigeret af NSA.

Opret svar til indlægget: PhP er for svagt, alternativ?

Grundet øget spam aktivitet fra gæstebrugere, er det desværre ikke længere muligt, at oprette svar som gæst.

Hvis du ønsker at deltage i debatten, skal du oprette en brugerprofil.

Opret bruger | Login
NYHEDSBREV
Afstemning