📸Canon EOS 5D IV 🚁DJI Mavic Pro 🏍️Zero SR ⚡Tesla M3 LR 🌡️Daikin US 3.5kW ☀️8815Wp 🔋Marstek Venus-E 5,12 kWh Tweakers PVOutput lijst
https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...

Alle gekheid op een stokje: PHP heeft veel standaardfuncties maar voor iets dat zo specifiek is als dit zul je toch moeten combineren. In dit geval kun je pathinfo gebruiken om aan de extensie te komen en daar strtolower overheen gooien of je zou (beter dan wat je nu doet in elk geval) kunnen exploden/splitten op de . en daarna het laatste array-element dat je terug krijgt naar lowercase zetten. Je blijft verder wel aan het combineren tussen functies.
Veiliger? Onzin, de code in de topicstart werkt ook prima voor het doel waar 'ie voor geschreven is en onveilig is het niet te noemen. Hooguit onhandig wanneer een file geen extensie heeft, maar daar moet je je regexp ook tegen wapenen. En als je dat doet is die ook verre van duidelijk.Verwijderd schreef op dinsdag 24 februari 2009 @ 12:16:
Ik zou de filename + extentie dmv Regex eruit halen. Stukje duidelijker en wat veiliger
[ Voor 29% gewijzigd door NMe op 24-02-2009 12:20 ]
'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.
Edit: Een explode waarbij je alleen de laatste element naar lowercase omzet, was iets handiger geweest dan mijn lastig leesbare oplossing.
[ Voor 43% gewijzigd door antonboonstra op 24-02-2009 12:22 ]
📸Canon EOS 5D IV 🚁DJI Mavic Pro 🏍️Zero SR ⚡Tesla M3 LR 🌡️Daikin US 3.5kW ☀️8815Wp 🔋Marstek Venus-E 5,12 kWh Tweakers PVOutput lijst
Verwijderd
Nouja veiliger bedoel ik idd ook niet, maar meer failsave. Veiliger in die zinNMe schreef op dinsdag 24 februari 2009 @ 12:18:
Je hebt duidelijke de file_convert_extension_to_lowercase() functie gemist...
Alle gekheid op een stokje: PHP heeft veel standaardfuncties maar voor iets dat zo specifiek is als dit zul je toch moeten combineren. In dit geval kun je pathinfo gebruiken om aan de extensie te komen en daar strtolower overheen gooien of je zou (beter dan wat je nu doet in elk geval) kunnen exploden/splitten op de . en daarna het laatste array-element dat je terug krijgt naar lowercase zetten. Je blijft verder wel aan het combineren tussen functies.
[...]
Veiliger? Onzin, de code in de topicstart werkt ook prima voor het doel waar 'ie voor geschreven is en onveilig is het niet te noemen. Hooguit onhandig wanneer een file geen extensie heeft, maar daar moet je je regexp ook tegen wapenen. En als je dat doet is die ook verre van duidelijk.
Onzin, regexp geeft geen enkel voordeel bij zo´n duidelijke taak. Het verhoogt alleen de kans op fouten omdat regexp heel wat complexer zijn dan de andere functies.Verwijderd schreef op dinsdag 24 februari 2009 @ 12:24:
[...]
Nouja veiliger bedoel ik idd ook niet, maar meer failsave. Veiliger in die zin
Ik zou geen pathinfo gebruiken, strrchr om de positie van de laatste punt te bepalen en substr om deze uit te knippen, is weer een stukje sneller omdat je pathinfo niet allerlei onnodige informatie op hoeft te laten zoeken. Just my two cents... Het is opzich niet fout met explode of pathinfo.
Ben het met je eens dat pathinfo misschien overbodige dingen doet. Mijn resulterende stukje code is:doeternietoe schreef op dinsdag 24 februari 2009 @ 13:01:
[...]
Onzin, regexp geeft geen enkel voordeel bij zo´n duidelijke taak. Het verhoogt alleen de kans op fouten omdat regexp heel wat complexer zijn dan de andere functies.
Ik zou geen pathinfo gebruiken, strrchr om de positie van de laatste punt te bepalen en substr om deze uit te knippen, is weer een stukje sneller omdat je pathinfo niet allerlei onnodige informatie op hoeft te laten zoeken. Just my two cents... Het is opzich niet fout met explode of pathinfo.
1
2
3
4
5
6
| function etl($file) //extension to lowercase { $arr = explode('.', $file); $arr[] = strtolower(array_pop($arr)); return implode('.',$arr); } |
📸Canon EOS 5D IV 🚁DJI Mavic Pro 🏍️Zero SR ⚡Tesla M3 LR 🌡️Daikin US 3.5kW ☀️8815Wp 🔋Marstek Venus-E 5,12 kWh Tweakers PVOutput lijst
'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.
Ik heb (als echte tweaker natuurlijk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
| <?php $time_start = getmicrotime(); // start de teller voor de parsetime if(isset($_GET['1'])) { for($i=0; $i<100000; $i++) { etl1('IMG_0001.JPG'); } } elseif(isset($_GET['2'])) { for($i=0; $i<100000; $i++) { etl2('IMG_0001.JPG'); } } elseif(isset($_GET['3'])) { for($i=0; $i<100000; $i++) { etl3('IMG_0001.JPG'); } } else {} $time_end = getmicrotime(); // bereken de parsetime $time = substr ( $time_end - $time_start, 0, 8 ); echo "Script is uitgevoerd in $time seconden"; function etl1($file) //extension to lowercase { $filename = strrev(strstr(strrev($file), '.')); // eerste gedeelte onveranderd $ext = substr(strtolower (strrchr ($file, '.')), 1); // extensiegedeelte naar kleine letters return $filename.$ext; } function etl2($file) //extension to lowercase { $file_parts = pathinfo($file); return $file_parts['filename'] . '.' . strtolower($file_parts['extension']); } function etl3($file) //extension to lowercase { $arr = explode('.', $file); $arr[] = strtolower(array_pop($arr)); return implode('.',$arr); } function getmicrotime() { list($usec, $sec) = explode(" ",microtime()); return ((float)$usec + (float)$sec); } ?> |
Uitslagen op een P4 3.2GHz machine:
functie 1: 0,593 seconden
functie 2: 0,647 seconden
functie 3: 0,637 seconden
Uitslag verspringt elke keer een paar duizendsten, maar laat wel dit beeld zien. Mijn eerste oplossing, was dus eigenlijk wel de snelste
📸Canon EOS 5D IV 🚁DJI Mavic Pro 🏍️Zero SR ⚡Tesla M3 LR 🌡️Daikin US 3.5kW ☀️8815Wp 🔋Marstek Venus-E 5,12 kWh Tweakers PVOutput lijst

Hier heb je nog een optimalisatie: gewoon microtime(true) doen ipv suffe PHP 4 style getmicrotime() functies.
{signature}
Puur uit leesbaarheid zou ik hier toch voor pathinfo kiezen. Als je dit nou 100.000 keer op een pagina moet doen begrijp ik een eventuele wens voor optimalisatie wel, nu niet echt.
Overigens heb ik een beetje moeite met het accepteren van een tijd van ruim een halve seconde voor iets simpels als dit.
'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.
Hij doet 't wel 100.000 keer hèNMe schreef op dinsdag 24 februari 2009 @ 14:28:
Overigens heb ik een beetje moeite met het accepteren van een tijd van ruim een halve seconde voor iets simpels als dit.
https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...
Mis ik de grap of heb jij gemist dat hij het honderdduizend keer doet?NMe schreef op dinsdag 24 februari 2009 @ 14:28:
Overigens heb ik een beetje moeite met het accepteren van een tijd van ruim een halve seconde voor iets simpels als dit.
edit: spuit elf

[ Voor 4% gewijzigd door Patriot op 24-02-2009 14:33 ]
Anyone who gets in between me and my morning coffee should be insecure.
Ben al een paar weken redelijk under the weather, dan krijg je dat.MueR schreef op dinsdag 24 februari 2009 @ 14:56:
NMe is vandaag gewoon wat traagjes.
'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.
(en de argumenten van explode staan in de verkeerde volgorde
[ Voor 26% gewijzigd door Voutloos op 25-02-2009 07:20 ]
{signature}