Hi Lars,

Unless you are doing some *really* intense Python code in your business
logic, then 9 out of 10 times, the bottleneck is usually the database,
especially if you are using Python.

Cal


On Mon, Nov 1, 2010 at 9:59 AM, Lars Ruoff <lars.ru...@gmail.com> wrote:

> Hello,
>
> first of all, these are my first steps with Django, and i only have
> limited experience with Python, so please be patient.
>
> I'm using it for what is intended to be a browser game in the future.
> The main part of the game is a zoom view on a two-dimensional map of
> fields.
>
> I'm currently using Django 1.2.3 with Python 2.6 on Windows XP.
> I'm using Python-provided SQLite and Django's local debug HTTP server
> during development ('python manage.py runserver').
>
> It works pretty well, but i notice that it takes several seconds to
> update the map screen, which i consider unacceptable given the fact
> that it runs locally.
>
> I'm wondering where the performance bottleneck lies here.
> Is it...
> - SQLLite? (I.e. would switching to say PostgreSQL speed things up
> considerably?)
> - Djangos debug web server? (I.e. would switching to apache speed
> things up considerably?)
> - or the way my application is designed??
>
> Since the latter is a very probable answer, here is the way it works
> in a nutshell:
>
> The model is something like:
> --------------------
> class Terrain(models.Model):
>    image_file = models.CharField(max_length=80)
>
> class Location(models.Model):
>    x = models.IntegerField()
>    y = models.IntegerField()
>    terrain = models.ForeignKey(Terrain)
>
>
> The heart of the view goes like this:
> --------------------
>    center_location = Location.objects.get(id=location_id)
>
>    ## how many fields on the map view in each direction
>    half_x = 6
>    half_y = 6
>
>    locations = Location.objects.filter( \
>        x__gte=center_location.x-half_x, \
>        x__lte=center_location.x+half_x, \
>        y__gte=center_location.y-half_y, \
>        y__lte=center_location.y+half_y)
>
>    locs = []
>    for l in locations:
>        loc_info = {'id': l.id, \
>            'x': l.x - center_location.x + half_x, \
>            'y': l.y - center_location.y + half_y, \
>            'img': l.terrain.image_file}
>        locs.append(loc_info)
>
>    c = Context({
>        'locs': locs,
>    })
>    return HttpResponse(t.render(c))
>
>
> And the main part of the template renders these items:
> --------------------
> {% for l in locs %}
> <div id="x{{l.x}}y{{l.y}}" class="tile"><a href="/map/{{l.id}}/"><img
> src="/images/{{l.img}}" /></a></div>
> {% endfor %}
>
>
> Do you see any issues with this approach? Any paths to performance
> improvements?
> Since i'm at the beginning of this project i would like to avoid going
> the wrong way.
>
> best regards,
> Lars
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To post to this group, send email to django-us...@googlegroups.com.
> To unsubscribe from this group, send email to
> django-users+unsubscr...@googlegroups.com<django-users%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/django-users?hl=en.
>
>


-- 

Cal Leeming

Operational Security & Support Team

*Out of Hours: *+44 (07534) 971120 | *Support Tickets: *
supp...@simplicitymedialtd.co.uk
*Fax: *+44 (02476) 578987 | *Email: *cal.leem...@simplicitymedialtd.co.uk
*IM: *AIM / ICQ / MSN / Skype (available upon request)
Simplicity Media Ltd. All rights reserved.
Registered company number 7143564

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to