Wow.  I had no idea that you guys would be so into this.  Thanks.

Oh, and just so you know, I lifted that data string in my example from the php online manual page for the base64_encode() function. I was just using it for testing purposes.

And, given how you said processing that 30 MB data set "gave my system a decent work out", I'm thinking that our decision to use a mediumblob (that limits to about 16MB, or about 12.3 MB before it's encoded) was a pretty good one. The next larger option was a largeblob (maximum around 4GB ... Ooo.)

Thanks again you guys,
Lloyd

James Lance wrote:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1



Here's the situation.  I'm encoding files (base 64 encoding) to put them
into a database.  I want to also include some metadata with the encoded
string, namely filename and mime type.  Here's an example of the format
I decided to use.

"filename: somefilename.txt;mime-type: text/plain; data:
VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw=="

So, I think the regexp that would allow me to extract the filename,
mime-type, and the data itself, is this:

/^filename:\s+([-_.a-zA-Z0-9]+);mime-type:\s+([-_/a-zA-Z0-9]+);data:\s(.*)$


I want you to know I wasted a good half-hour ~ 45 minutes because of you :-)

I thought that I would show you a completely different way of splitting out that data:
$var = "filename: somefilename.txt;mime-type: text/plain; data: VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==";


my %info = (map(split(/\s*:\s*/,$_),split(/\s*;\s*/,$var)));

If you can get rid of the spaces between the : and ; like:
"filename:somefilename.txt;mime-type:text/plain;data:VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==";
then you can clear out the \s* filters.
You can get at your data through $info{filename}, $info{data} etc

Then I thought that I would check the time differences between using map and split and the regex that Jacob suggested:
s/^filename: ([^;]+);mime-type: ([^;]+); data: //;


The regex is about twice as fast with that data string that you have there.
I tried using a data input that was 30 megs in size and the regex was about 8 times faster. I have included the test results if you are interested:
very small data set:
10001 trials of map (155.096ms total), 15us/trial
10001 trials of regex (94.459ms total), 9us/trial


30 meg data set:
1001 trials of map (274.845s total), 274.571ms/trial
1001 trials of regex (42.634s total), 42.591ms/trial

the 30 meg test trial gave my system a decent work out. it had that cpu usage up at %60.

That was a fun waste of time... :-)
- -- James Lance
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)


iD8DBQFArD6exwWH9N2FUHoRAi6GAJ9769N+FODYBz6N5dWLtD6EviXJTACg0yiR
KS/qg4FKpfE921mHwt78UUI=
=a0hS
-----END PGP SIGNATURE-----


____________________
BYU Unix Users Group http://uug.byu.edu/ ___________________________________________________________________
List Info: http://uug.byu.edu/cgi-bin/mailman/listinfo/uug-list






--

--------------------
"Open Source is not a crime."
               -Seen on a bumper sticker
--------------------



____________________
BYU Unix Users Group http://uug.byu.edu/ ___________________________________________________________________
List Info: http://uug.byu.edu/cgi-bin/mailman/listinfo/uug-list

Reply via email to