Code Irony

An Ironic Look at the State of the Art by Christopher Myers and Justin Davis

Fastest templating engine ever. Period.

Since web frameworks seem to be the only thing people are doing in Python these days, templating languages have become increasingly important. The problem that we at Code Irony keep running into is that they’re just not fast enough. How slow are they? We ran some profiling across one of our projects and this is what we’ve found:

graph
0.029%! Are you kidding?!? Sure, other processes take time too, but those problems look hard to solve. The obvious bottleneck that we can fix is the template rendering. The kludgy template system just has to go! We’ve decided to solve this by implementing our own template system. Since we’ve actually taken the time to think about it (unlike those other templating solutions), we’ll name it ConTemplate. It works like this: Say you want to create a basic web page, and have it show your name at the top. First create a template file that looks like this:

<h1>Hello %(name)s</h1>

After many usability tests, we found that the %(variable)s syntax is the easiest for people to understand. Furthermore, we want to be sure to separate the logic from the presentation, so we only want to replace strings. Save this file to hello.html Then, in your web framework, just import our template engine and use the code like this:
myshark

from contemplate import ConTemplate

mytemplate = ConTemplate("hello.html")

name = "Guido"

print mytemplate.render()

>  <h1>Hello Guido</h1>

Look! ConTemplate filled in your name and everything! Now, we all know that speed is the real factor in making a templating language. Check out how ConTemplate stacks up against some of the competition:

Template Processing Time
Genshi .110s
Mako .109s
ConTemplate .107s

Wow! On our first try, we beat the two fastest python templating languages! And Genshi lost by almost 3%! Imagine how fast it’ll be when version 2 comes out! You can get the benchmark test here and download the implementation here, or browse it below.


# Filename: contemplate.py
# Revision: 0.1
#
# Copyright 2008 Christopher Myers and Justin Davis
#
# “ConTemplate”
# This is by far the fastest python templating language you’ve ever used. 
#
# You have unlimited license to use this software however you want.  There
# is no warranty either expressed nor implied.  Actually, we recommend not 
# using it.  It just exists to prove a point.

import inspect

class ConTemplate(object):

    def __init__(self, filename):
        “”“Load the template”“”
        try:
            self.template = open(filename).read()
        except IOError:
            raise IOError, “No file at that location”

    def render(self, locs = None):
        “”“Render the template”“”
        if not locs:
            locs = globals()
            locs.update(inspect.currentframe(1).f_locals)
        return self.template % locs

125 Comments so far

  1. thomas lackner February 7th, 2008 9:10 pm

    looping.

  2. brian February 7th, 2008 9:19 pm

    LOL love the sarcasm

  3. Jonathan Mark February 7th, 2008 9:48 pm

    You meant 29%

  4. percent February 8th, 2008 1:21 am

    29%?

    0.02727273, so he’s right, no?

  5. Robins February 8th, 2008 1:22 am

    I think as per the graph… he did mean .029% (which is 0.00029) !

  6. percent February 8th, 2008 1:23 am

    Oh, 29% was referring to another number. I think he’s being sarcastic there.

  7. anon February 8th, 2008 1:31 am

    no actually he means 3. idiot.

  8. anon February 8th, 2008 4:33 am

    that comparison is stupid, fix in some security, any number of variables, content driven caching and try again..

  9. Armin Ronacher February 8th, 2008 7:47 am

    That implementation is broken. globals() returns the global namespace, not a reference to this. As a result of that you are updating the module where the template is located in with the rendering locals. Neither nice nor threadsafe.

  10. Dezro February 8th, 2008 8:16 am

    I tried to beat you with a little secret weapon I like to call string.Template, but it didn’t quite work out…

    ConTemplate: 0.0673758983612
    ProTemplate: 0.0676801204681

    Still! Pretty close, aren’t I?

  11. Harald Armin Massa February 8th, 2008 9:33 am

    this library was presented @ europython 2006 @ CERN, Switzerland. It’s name is zerolib and it is the final templating solution for Python, no installs needed, since the name zerolib.

  12. Mike Cantelon February 8th, 2008 11:14 am

    Epic win, gents. I’m hereby reinventing my business as a presentation layer optimization consultancy with ConTemplate as my Excalibur.

  13. rektide February 8th, 2008 4:44 pm

    your solution really takes 100ms to just do templating?

  14. Michael Carter February 8th, 2008 6:17 pm

    This solution is just dumb. Since you can only do string replacement, all of your looping and conditional logic will happen in your code. You will be concatenating strings together inside python for loops — thats the worst idea you’ve had today.

    Did you try mako or cheetah for python?

  15. Bill G February 9th, 2008 12:06 am

    I use .NET, will this template be available for .NET?

    Thanks!

  16. Eric Florenzano February 9th, 2008 2:12 am

    Lol! I love the serious responses you’re getting–classic!

  17. Handsome Greg February 13th, 2008 6:18 pm

    Hilarious. Who _are_ these people who don’t get the joke?

  18. Terry Nova February 15th, 2008 12:23 pm

    LOVE your blog, thanks for entertaining me
    Hope there will be more posts soon
    regards, terry
    ps - sorry im not that good in writing in english because I came from europe - but i understand a lot

  19. Ricardo Montalban February 22nd, 2008 9:59 pm

    I bet things would be a lot faster if you didn’t use a template system and just used static coded webpages. Who cares about maintainability? It’s all about the speed, baby!

  20. gavin March 4th, 2008 12:29 am

    I think the point of this blog is …
    the speed of a template engine is absolutely meaningless. The ease of use/maintainability of a template engine is the only thing that matters.

  21. Julianaoe March 24th, 2008 9:26 am

    Nice post., guy

  22. Dude August 24th, 2008 10:41 pm

    Excelent. Your blog is really interesting. To have a good blog you should not only to post smth, but do it with your soul. You do your best.

  23. Kylie BattName April 12th, 2010 1:10 pm

    самый тупой развод…

    Репетитор Since web frameworks seem to be the only thing people are doing in Python these days, templating languages have become increasingly important…..

  24. ALEXANDER July 21st, 2010 11:15 am

    < blockquote >< a href=”http://medicamentspot.com/”>Medicamentspot.com. Canadian Health&Care.Best quality drugs.No prescription online pharmacy.Special Internet Prices. Low price pills. Buy drugs online< /a >…

    Buy:Cialis.Maxaman.Cialis Soft Tabs.Soma.Tramadol.Zithromax.Super Active ED Pack.Cialis Professional.Viagra Super Active+.VPXL.Cialis Super Active+.Viagra Soft Tabs.Viagra.Viagra Super Force.Levitra.Propecia.Viagra Professional….

  25. DVD-RW August 29th, 2010 2:33 am

    DVD-RW http://04FORDPARTS.US/tag/DVD-RW 10 : 10…

    DVD-RW…

  26. 80 Tractor allis light/ August 29th, 2010 3:40 am

    1 http://ANTIQUEFURNINISHING.INFO/tag/1 : 80 Tractor allis light/…

    80 Tractor allis light/…

  27. Children's August 29th, 2010 5:14 am

    Children’s http://ofootv9xf.AUTOPARTSVILLE.INFO/tag/Children’s play Furniture/ : Furniture…

    Children’s…

  28. Monitoring August 29th, 2010 5:35 am
  29. Stores August 29th, 2010 4:23 pm
  30. speaker August 29th, 2010 4:37 pm
  31. electric August 29th, 2010 4:42 pm
  32. Freezer August 29th, 2010 9:07 pm
  33. orleans September 14th, 2010 11:08 pm

    new http://p5b.spx.ll1.co : new…

    new…

  34. ARTURO December 20th, 2010 5:00 am

    < b >< a href=”http://my.gardenguides.com/members/Abilify-332?ml=id Abilify@official.site” >.< /a >< /b >< /blockquote >…

    Buywithout prescription…

  35. CURTIS December 21st, 2010 1:12 am

    < b >< a href=”http://my.gardenguides.com/members/Viagra” >buy viagra canada< /a >< /b >< /blockquote >…

    Buygeneric drugs…

  36. JUAN December 21st, 2010 2:05 pm

    < b >< a href=”http://my.gardenguides.com/members/Accupril” >Accupril< /a >< /b >< /blockquote >…

    Buygeneric drugs…

  37. GABRIEL December 24th, 2010 1:16 pm

    < b >< a href=”http://my.gardenguides.com/members/Abilify-317″ >Abilify< /a >< /b >< /blockquote >…

    Buygeneric pills…

  38. ARMANDO December 24th, 2010 11:30 pm

    < b >< a href=”http://my.gardenguides.com/members/Abilify-411″ >abilify and siezures< /a >< /b >< /blockquote >…

    Buynow…

  39. DAVE December 27th, 2010 10:25 am

    < b >< a href=”http://my.gardenguides.com/members/Accutane? Accutane@official.site” >.< /a >< /b >< /blockquote >…

    Buywithout prescription…

  40. LAWRENCE December 27th, 2010 1:17 pm

    < b >< a href=”http://my.gardenguides.com/members/Aciphex? aciphex@buy” >…< /a >< /b >< /blockquote >…

    Buygeneric meds…

  41. JOHN December 28th, 2010 2:33 pm

    < b >< a href=”http://my.gardenguides.com/members/Adalat? shimmy@adalat.simone” >..< /a >< /b >< /blockquote >…

    Buyit now…

  42. JOSHUA December 29th, 2010 4:50 am

    < b >< a href=”http://my.gardenguides.com/members/Aldactone? Aldactone@official.site” >.< /a >< /b >< /blockquote >…

    Buygeneric drugs…

  43. SHAWN December 29th, 2010 1:05 pm

    < b >< a href=”http://my.gardenguides.com/members/Aloe-Juice-47? fruite@of.the.earth.aloe.vera.juice.sale” >…< /a >< /b >< /blockquote >…

    Buynow…

  44. JULIAN January 3rd, 2011 10:04 pm

    < b >< a href=”http://my.gardenguides.com/members/Abilify-332? abilify@anxiety.now” >.< /a >< /b >< /blockquote >…

    Buygeneric drugs…

  45. JEREMY January 4th, 2011 4:45 pm

    < b >< a href=”http://my.gardenguides.com/members/generic-Levitra? generic@Levitra.now” >..< /a >< /b >< /blockquote >…

    Buyno prescription…

  46. BRIAN January 5th, 2011 12:37 am

    < b >< a href=”http://my.gardenguides.com/members/buy-Viagra-62? buy@cheap.viagra.in.uk” >.< /a >< /b >< /blockquote >…

    Buywithout prescription…

  47. ROLAND January 6th, 2011 6:38 pm

    < b >< a href=”http://my.gardenguides.com/members/Prozac? prozac@dangers.now” >..< /a >< /b >< /blockquote >…

    Buygeneric drugs…

  48. LEE January 9th, 2011 1:07 am

    < b >< a href=”http://my.gardenguides.com/members/Phenergan? i@am.pregnant.how.often.can.i.take.25mg.of.phenergan.safely” >…< /a >< /b >< /blockquote >…

    Buygeneric drugs…

  49. JAVIER January 21st, 2011 4:10 am

    < b >< a href=”http://my.gardenguides.com/members/Zyrtec? Zyrtec@official.site” >…< /a >< /b >< /blockquote >…

    Buyno prescription…

  50. LARRY February 5th, 2011 5:09 pm

    < b >< a href=”http://www.ocf.berkeley.edu/~cambodia/cgi-bin/yabb/YaBB.pl?action=viewprofile&username=Zithromax” >buy zithromax online< /a >< /b >< /blockquote >…

    Buyno prescription…

  51. JAVIER February 5th, 2011 8:50 pm

    < b >< a href=”http://www.ocf.berkeley.edu/~cambodia/cgi-bin/yabb/YaBB.pl?action=viewprofile&username=Zinc” >buy zinc anode everett wa< /a >< /b >< /blockquote >…

    Buygeneric meds…

  52. SHAWN February 6th, 2011 9:35 am

    < b >< a href=”http://www.ocf.berkeley.edu/~cambodia/cgi-bin/yabb/YaBB.pl?action=viewprofile&username=Clindamycin-592″ >Clindamycin< /a >< /b >< /blockquote >…

    Buywithout prescription…

  53. SHAWN February 7th, 2011 6:23 am

    < b >< a href=”http://www.ocf.berkeley.edu/~cambodia/cgi-bin/yabb/YaBB.pl?action=viewprofile&username=Xalatan” >Xalatan< /a >< /b >< /blockquote >…

    Buywithout prescription…

  54. DAVE March 3rd, 2011 12:38 am

    < b >< a href=”http://www.box.net/shared/78h3klybs4″ >Zyrtec< /a >< /b >< /blockquote >…

    Buyno prescription…

  55. JONATHAN March 3rd, 2011 2:52 pm

    < b >< a href=”http://www.box.net/shared/e13gzfqsse” >can you take zoloft and blood pressure medication together< /a >< /b >< /blockquote >…

    Buynow…

  56. ANDY March 4th, 2011 2:19 am

    < b >< a href=”http://www.box.net/shared/37ece9c6p3″ >Vitamin B< /a >< /b >< /blockquote >…

    Buynow it…

  57. MATHEW March 4th, 2011 3:01 am

    < b >< a href=”http://www.box.net/shared/7mu9poma8x” >where to buy lamisil< /a >< /b >< /blockquote >…

    Buygeneric drugs…

  58. ADAM March 4th, 2011 6:25 am

    < b >< a href=”http://www.box.net/shared/y2hlyansgp” >Zyrtec< /a >< /b >< /blockquote >…

    Buygeneric meds…

  59. DANA March 4th, 2011 11:06 pm

    < b >< a href=”http://www.box.net/view_shared/y2hlyansgp” >pharmacokinetics of zyrtec< /a >< /b >< /blockquote >…

    Buyit now…

  60. JEREMIAH March 5th, 2011 2:36 am

    < b >< a href=”http://www.box.net/view_shared/q9n4pqj16l” >Pyridium< /a >< /b >< /blockquote >…

    Buygeneric drugs…

  61. MIGUEL March 5th, 2011 9:34 am

    < b >< a href=”http://www.box.net/view_shared/izt5xisjtj” >stopped taking prozac realized i like him< /a >< /b >< /blockquote >…

    Buygeneric drugs…

  62. DOUG March 6th, 2011 4:45 am

    < b >< a href=”http://www.box.net/view_shared/8d6ki1obud” >dermatological side effects of rogaine< /a >< /b >< /blockquote >…

    Buywithout prescription…

  63. JEFF March 6th, 2011 10:02 am

    < b >< a href=”http://www.box.net/view_shared/ln3zruvrzj” >Prozac< /a >< /b >< /blockquote >…

    Buynow it…

  64. PETER March 6th, 2011 12:25 pm

    < b >< a href=”http://www.box.net/view_shared/bfvenlufrx” >provera 10 days perimenopause< /a >< /b >< /blockquote >…

    Buygeneric drugs…

  65. NICHOLAS March 7th, 2011 3:44 am

    < b >< a href=”http://www.box.net/view_shared/d491n8rcbz” >Omnicef< /a >< /b >< /blockquote >…

    Buynow it…

  66. JESSIE March 8th, 2011 12:27 am

    < b >< a href=”http://www.box.net/view_shared/mfz32lab90″ >Synthroid< /a >< /b >< /blockquote >…

    Buygeneric pills…

  67. VIRGIL March 8th, 2011 9:47 am

    < b >< a href=”http://www.box.net/view_shared/08a5gao5nl” >Retin A< /a >< /b >< /blockquote >…

    Buywithout prescription…

  68. LONNIE March 8th, 2011 12:17 pm

    < b >< a href=”http://www.box.net/view_shared/f6r4fjh6dr” >Remeron< /a >< /b >< /blockquote >…

    Buyno prescription…

  69. ANDRE March 9th, 2011 1:43 pm

    < b >< a href=”http://www.box.net/view_shared/h3tmkxaman” >Synthroid< /a >< /b >< /blockquote >…

    Buygeneric meds…

  70. ROBERTO March 9th, 2011 6:03 pm

    < b >< a href=”http://www.box.net/view_shared/s2xnfr2e8y” >can i take expired zyrtec< /a >< /b >< /blockquote >…

    Buygeneric drugs…

  71. CLINTON March 9th, 2011 8:21 pm

    < b >< a href=”http://www.box.net/view_shared/xprnhvn2fu” >Eye Drops< /a >< /b >< /blockquote >…

    Buyno prescription…

  72. DUANE March 10th, 2011 10:56 am

    < b >< a href=”http://www.box.net/view_shared/yt378pkf6i” >savella diabetes blood sugar< /a >< /b >< /blockquote >…

    Buygeneric drugs…

  73. RUSSELL March 10th, 2011 5:34 pm

    < b >< a href=”http://www.box.net/view_shared/lghk5rd0ir” >Pulmicort< /a >< /b >< /blockquote >…

    Buywithout prescription…

  74. MATTHEW March 28th, 2011 10:41 pm

    < b >< a href=”http://www.eoearth.org/profile/Tetracycline25769?ml=id Tetracycline@Tetracycline.Tetracycline” >…< /a >< /b >< /blockquote >…

    Buyno prescription…

  75. ADRIAN March 30th, 2011 9:01 am

    < b >< a href=”http://www.eoearth.org/profile/Synthroid96384?ml=id Synthroid@Synthroid.Synthroid” >..< /a >< /b >< /blockquote >…

    Buynow it…

  76. KARL March 30th, 2011 8:18 pm

    < b >< a href=”http://www.eoearth.org/profile/Cymbalta27528?ml=id Cymbalta@Cymbalta.Cymbalta” >.< /a >< /b >< /blockquote >…

    Buyit now…

  77. RONALD April 1st, 2011 11:23 am

    < b >< a href=”http://www.box.net/view_shared/200qlx12ry?ml=id does@pristiq.cause.weight.loss” >..< /a >< /b >< /blockquote >…

    Buygeneric meds…

  78. RICKY April 1st, 2011 3:02 pm

    < b >< a href=”http://www.box.net/view_shared/9l1679zm0b?ml=id order@protonix” >…< /a >< /b >< /blockquote >…

    Buygeneric meds…

  79. PHILIP April 3rd, 2011 12:25 am

    < b >< a href=”http://www.box.net/view_shared/054g4g1blh?ml=id chantix@vs.zyban” >..< /a >< /b >< /blockquote >…

    Buyit now…

  80. MARK April 3rd, 2011 10:55 am

    < b >< a href=”http://www.box.net/view_shared/mpcy7o3u8h?ml=id retin@a.cheap.no.prescription” >..< /a >< /b >< /blockquote >…

    Buygeneric drugs…

  81. ROBERT April 3rd, 2011 5:56 pm

    < b >< a href=”http://www.box.net/view_shared/9fbemgbxb7?ml=id man@plan.a.and.b” >..< /a >< /b >< /blockquote >…

    Buygeneric drugs…

  82. HARVEY April 3rd, 2011 11:10 pm

    < b >< a href=”http://www.box.net/view_shared/8szsovix6r?ml=id buy@actonel” >.< /a >< /b >< /blockquote >…

    Buygeneric drugs…

  83. JARED April 4th, 2011 2:19 am

    < b >< a href=”http://www.box.net/view_shared/vf76p17ypp?ml=id high@dose.dexamethasone.induction” >..< /a >< /b >< /blockquote >…

    Buydrugs without prescription…

  84. ELMER April 4th, 2011 6:18 am

    < b >< a href=”http://www.box.net/view_shared/xgrjyapebt?ml=id aldactone@diet” >…< /a >< /b >< /blockquote >…

    Buygeneric pills…

  85. MAX April 4th, 2011 5:25 pm

    < b >< a href=”http://www.box.net/view_shared/tfaojp5fmf?ml=id dangers@of.alphagan” >..< /a >< /b >< /blockquote >…

    Buynow…

  86. WAYNE April 4th, 2011 9:39 pm

    < b >< a href=”http://www.box.net/view_shared/2r4a3hk7ln?ml=id protopic@ointment.and.antibiotics” >…< /a >< /b >< /blockquote >…

    Buydrugs without prescription…

  87. HECTOR April 5th, 2011 12:49 am

    < b >< a href=”http://www.box.net/view_shared/4dhvkdejom?ml=id order@altace.cod” >..< /a >< /b >< /blockquote >…

    Buynow…

  88. EDDIE April 5th, 2011 6:37 am

    < b >< a href=”http://www.box.net/view_shared/64f9edbyq5?ml=id motrin@for.61.pounds” >…< /a >< /b >< /blockquote >…

    Buygeneric meds…

  89. KEITH April 6th, 2011 12:47 am

    < b >< a href=”http://www.box.net/view_shared/kenh1j53hr?ml=id treatment@c.diff.flagyl” >…< /a >< /b >< /blockquote >…

    Buyit now…

  90. LYNN April 6th, 2011 3:40 am

    < b >< a href=”http://www.box.net/view_shared/jly1nka0mz?ml=id premarin@cream.comments” >…< /a >< /b >< /blockquote >…

    Buyit now…

  91. NICK April 6th, 2011 7:37 am

    < b >< a href=”http://www.box.net/view_shared/y1xug9ra51?ml=id abilify@drug” >.< /a >< /b >< /blockquote >…

    Buyno prescription…

  92. JUAN April 6th, 2011 7:55 am

    < b >< a href=”http://www.box.net/view_shared/bqsavzdlzm?ml=id fml@mobile” >…< /a >< /b >< /blockquote >…

    Buyno prescription…

  93. SALVADOR April 7th, 2011 5:45 am

    < b >< a href=”http://www.box.net/view_shared/nacetk0sky?ml=id actonel@risk” >..< /a >< /b >< /blockquote >…

    Buyit now…

  94. 3399 June 15th, 2011 12:57 pm

    ….

    purchase@inexpensive.cialis.online” rel=”nofollow”>.…

  95. 33s99 June 15th, 2011 1:49 pm

    ….

    cialis@professional.review” rel=”nofollow”>.…

  96. tyhg June 15th, 2011 4:05 pm

    ….

    cialis@levitra.pharmacy.viagra” rel=”nofollow”>.…

  97. tyhssg June 15th, 2011 4:28 pm

    ….

    purchase@inexpensive.cialis.online” rel=”nofollow”>.…

  98. (_._) June 16th, 2011 1:16 pm

    ….

    Cialis@Tadalafil.10.20.mg” rel=”nofollow”>.…

  99. .22. June 16th, 2011 1:16 pm

    ….

    Kamagra@Sildenafil.Citrate.comp” rel=”nofollow”>.…

  100. (|) June 16th, 2011 1:19 pm

    ….

    cialis.viagra@levitra.online.pharmacy” rel=”nofollow”>.…

  101. :-> June 16th, 2011 1:21 pm

    ….

    buy@Cialis.Professional.Tadalafil.20.mg” rel=”nofollow”>.…

  102. :-)) June 20th, 2011 8:32 am

    ….

    buy@Cialis.Tadalafil.cheap” rel=”nofollow”>.…

  103. djgfsa June 21st, 2011 9:14 am

    ….

    cialis@generic.online” rel=”nofollow”>.…

  104. .aaa22sss. June 23rd, 2011 6:22 am

    ….

    generic@cialis.mg” rel=”nofollow”>.…

  105. a4sdtfff July 22nd, 2011 3:51 pm

    ….

    buy.generic@cialis.online” rel=”nofollow”>.…

  106. a4sdfff July 22nd, 2011 5:36 pm

    ….

    .@buy.cialis.online” rel=”nofollow”>.…

  107. asdf July 22nd, 2011 5:56 pm

    ….

    .@cialis.online” rel=”nofollow”>.…

  108. 1asdf July 22nd, 2011 7:30 pm

    ….

    .@generic.cialis” rel=”nofollow”>.…

  109. ffsdtfff July 22nd, 2011 10:42 pm

    ….

    buy@generic.cialis” rel=”nofollow”>.…

  110. asdfff July 23rd, 2011 1:50 am

    ….

    .@buy.cialis” rel=”nofollow”>.…

  111. ffaadff July 23rd, 2011 2:52 am

    ….

    .@generic.cialis.online” rel=”nofollow”>.…

  112. 1aasssdf August 3rd, 2011 10:28 am

    ….

    .@buy.cialis” rel=”nofollow”>.…

  113. a4s5554ff August 3rd, 2011 6:06 pm

    ….

    cialis@online.pharmacy” rel=”nofollow”>.…

  114. ppa33 August 3rd, 2011 9:26 pm

    ….

    .@cialis.online” rel=”nofollow”>.…

  115. asrrefff August 4th, 2011 6:12 am

    ….

    buy@cialis.online” rel=”nofollow”>.…

  116. 11ppaaa33 August 9th, 2011 4:02 am

    ….

    cialis@professional.online” rel=”nofollow”>.…

  117. Clothes August 13th, 2011 6:50 pm

    ….

    Best.place.to@buy.Clothes” rel=”nofollow”>.…

  118. cozr August 14th, 2011 4:44 pm

    ….

    buy@cozaar.online” rel=”nofollow”>.…

  119. vavi1 October 5th, 2011 7:43 am

    ….

    .@comprar.viagra” rel=”nofollow”>.…

  120. vavi October 5th, 2011 10:06 am

    ….

    .@comprar.levitra” rel=”nofollow”>.…

  121. vavi2 October 11th, 2011 12:22 pm

    ….

    .@viagra.precio” rel=”nofollow”>.…

  122. 3366 November 7th, 2011 11:27 am

    ….

    best.place.to@buy.diamonds” rel=”nofollow”>.…

  123. 3366 November 7th, 2011 11:27 am

    ….

    best.place.to@buy.diamonds” rel=”nofollow”>.…

  124. viiv November 9th, 2011 12:52 pm

    ….

    buy.viagra@online.cheap” rel=”nofollow”>.…

  125. s666s November 10th, 2011 10:21 am

    ….

    buy@pfizer.viagra” rel=”nofollow”>.…

Leave a reply