Skip to content

Instantly share code, notes, and snippets.

@bluetech
Created May 2, 2019 16:23
Show Gist options
  • Save bluetech/cdd3b3d6d9d8cfc7b1dfee3c6482679d to your computer and use it in GitHub Desktop.
Save bluetech/cdd3b3d6d9d8cfc7b1dfee3c6482679d to your computer and use it in GitHub Desktop.
DRF lazy() benchmark
#!/usr/bin/env python
import cProfile
import django
from django.db import models
from django.conf import settings
from rest_framework import serializers
settings.configure(INSTALLED_APPS=['rest_framework'])
django.setup()
class SomeModel(models.Model):
class Meta:
app_label = 'some_app'
field1 = models.CharField(max_length=2)
field2 = models.CharField(max_length=2)
field3 = models.CharField(max_length=2)
field4 = models.CharField(max_length=2)
field5 = models.CharField(max_length=2)
class ModelSerializer(serializers.ModelSerializer):
class Meta:
model = SomeModel
fields = [
'field1',
'field2',
'field3',
'field4',
'field5',
]
class RegularSerializer(serializers.Serializer):
field1 = serializers.CharField(max_length=2)
field2 = serializers.CharField(max_length=2)
field3 = serializers.CharField(max_length=2)
field4 = serializers.CharField(max_length=2)
field5 = serializers.CharField(max_length=2)
def custom_serializer(obj):
return {
'field1': obj.field1,
'field2': obj.field2,
'field3': obj.field3,
'field4': obj.field4,
'field5': obj.field5,
}
instance = SomeModel(
field1='1',
field2='2',
field3='3',
field4='4',
field5='5',
)
def run_model():
ModelSerializer(instance).data
def run_regular():
RegularSerializer(instance).data
def run_custom():
custom_serializer(instance)
cProfile.run('''for i in range(5000): run_model()''', sort='tottime')
cProfile.run('''for i in range(5000): run_regular()''', sort='tottime')
cProfile.run('''for i in range(5000): run_custom()''', sort='tottime')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy