<br><br><div><span class="gmail_quote">On 9/22/05, <b class="gmail_sendername">Peter Benjamin</b> &lt;<a href="mailto:pete@peterbenjamin.com">pete@peterbenjamin.com</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
I hope I've written an email that can be understood.<br>My advise is to read it all the way through before<br>replying, as it is a complex &quot;overall&quot; efficiency<br>question, involving just not the perl CGI code,<br>
but also the web server needing the same directory.<br><br>--<br><br>What would be the most CPU/IO efficient method to<br>test whether the following filenames exist to<br>get images to display on a web page, where any<br>
matching filenames should be displayed?<br><br>Only one file from the following possibilities<br>the client would be uploading:</blockquote><div><br>
You really could generate a static page right after the upload instead of generating a page on demand when requested. <br>
</div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">skunumber.jpg<br>skunumber.gif<br>skunumber.medium.jpg<br>skunumber.medium.gif<br>
skunumber.large.jpg<br>skunumber.large.gif<br><br>Currently, it uses if-elsif-elsif-elsif... using the -e test<br>against the full pathname.<br><br>Plus any matching names from this list:<br><br>skunumber.A.jpg&nbsp;&nbsp; (second image to display with the one above)
<br>skunumber.B.jpg&nbsp;&nbsp; (third, etc...)<br>skunumber.C.jpg<br>skunumber.D.jpg<br><br>This uses 4 if statements using the -e test against the full pathname.</blockquote><div><br>
my @displayable&nbsp; = grep { -e $_&nbsp; } @candidate_files ; <br>
</div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">So, either 0, 1, or 2 to 5 images might be displayed.<br><br>Would it be faster to get the entire directory listing of
<br>12,000 images (and growing) with this type of statement:</blockquote><div><br>
12,000 images in one directory is suspicious isn't it? Why not have a
directory per sku number? or a directory per user? There must be some
way to partition your data set so that one directory is not holding
everything.<br>
&nbsp;</div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">cd pathname;<br>foreach $filename ( &lt;skunumber*.*&gt; ) {<br>&nbsp;&nbsp;if-elsif-else<br>
}</blockquote><div><br>
foreach my $file (&lt;skunumber/*.*&gt;) {<br>
# note the &quot;/&quot; so that each sku's files are in a separate
directory...&nbsp; I'm not sure about efficiency, but you might look
into inodes and how they relate to storing files in a directory. Each
inode can only hold X amount of file info. On ext2 and ext3 you get 3
options when creating an ext filesystem, one for a directory holding a
bunch of itty-bitty teensy weensy files, one for people downloading a
huge files (like videos and music) and one for in-between.<br>
<br>
</div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Maybe a readdir would be even faster?&nbsp;&nbsp;</blockquote><div><br>
<br>
Why has speed become an issue? Correctness is much more important in my view... get a few more machines and load-balance. :) <br>
</div><br><br>
</div><br>