জেসন এবং সিম্পজসন পাইথন মডিউলগুলির মধ্যে পার্থক্য কী?


381

আমি simplejsonপরিবর্তে মডিউল ব্যবহার করে অনেক প্রকল্প দেখেছিjson স্ট্যান্ডার্ড লাইব্রেরি থেকে । এছাড়াও, অনেকগুলি বিভিন্ন simplejsonমডিউল রয়েছে। স্ট্যান্ডার্ড লাইব্রেরির পরিবর্তে এই বিকল্পগুলি কেন ব্যবহার করা হবে?

উত্তর:


391

json হয় simplejson , stdlib যোগ। তবে যেহেতু json২.6-এ যুক্ত হয়েছিল,simplejson আরও পাইথন সংস্করণে (২.৪+) কাজ করার সুবিধা রয়েছে।

simplejson পাইথনের চেয়েও ঘন ঘন আপডেট করা হয়, তাই আপনার যদি সর্বশেষতম সংস্করণ প্রয়োজন হয় (বা চান) তবে এটি ব্যবহার করা ভাল simplejson , সম্ভব হলে নিজেই ।

একটি ভাল অনুশীলন, আমার মতে, একটি বা অন্যটিকে ফ্যালব্যাক হিসাবে ব্যবহার করা।

try:
    import simplejson as json
except ImportError:
    import json

2
এখন যদি আমি কেবল অভিযোগ বন্ধ করার জন্য পাইফ্লেক্স পেতে পারিredefinition of unused 'json'
জেমস ম্যাকমাহন

5
তারা একই কিংবা সামঞ্জস্যপূর্ণ হয় না, simplejson একটি JSONDecodeError এবং JSON একটি ValueError হয়েছে
বিয়ন্সের

3
@BjornTipling JSONDecodeErrorএকটি উপশ্রেণী হয়ValueError
elhefe

30
উপরের উত্তরটি দিয়ে আমি দ্বিমত পোষণ করছি যে আপনার কাছে আপ টু ডেট পাইথন রয়েছে। পাইথন ২.7-এ অন্তর্নির্মিত (দুর্দান্ত প্লাস !!!) জসন লাইব্রেরি সিম্পজসনের মতো দ্রুত এবং এতে ইউনিকোড-নির্ধারিত-কম-নির্দিষ্ট করা যায় নি। উত্তর দেখুন stackoverflow.com/a/16131316/78234
তাল ওয়েইস

1
মনে হচ্ছে পাইথন ২..7 জেসন সিম্পজসন ভি ২.০.৯ গৃহীত হয়েছে যা লেখার ক্ষেত্রে বর্তমান সিম্পজসন ভি ৩..6.৫ এর চেয়ে অনেক পিছনে রয়েছে। আমদানি সিম্পজসনের মূল্য অনেক উন্নতি হয়েছে
কেনজি নোগুচি

82

আমি অন্যান্য উত্তরগুলির সাথে একমত নই: jsonগ্রন্থাগারটিতে নির্মিত (পাইথন ২.7-এ) অগত্যা তুলনায় ধীর নয় simplejson। এছাড়া নেই এই বিরক্তিকর ইউনিকোড বাগ

এখানে একটি সাধারণ মানদণ্ড দেওয়া হল:

import json
import simplejson
from timeit import repeat

NUMBER = 100000
REPEAT = 10

def compare_json_and_simplejson(data):
    """Compare json and simplejson - dumps and loads"""
    compare_json_and_simplejson.data = data
    compare_json_and_simplejson.dump = json.dumps(data)
    assert json.dumps(data) == simplejson.dumps(data)
    result = min(repeat("json.dumps(compare_json_and_simplejson.data)", "from __main__ import json, compare_json_and_simplejson", 
                 repeat = REPEAT, number = NUMBER))
    print "      json dumps {} seconds".format(result)
    result = min(repeat("simplejson.dumps(compare_json_and_simplejson.data)", "from __main__ import simplejson, compare_json_and_simplejson", 
                 repeat = REPEAT, number = NUMBER))
    print "simplejson dumps {} seconds".format(result)
    assert json.loads(compare_json_and_simplejson.dump) == data
    result = min(repeat("json.loads(compare_json_and_simplejson.dump)", "from __main__ import json, compare_json_and_simplejson", 
                 repeat = REPEAT, number = NUMBER))
    print "      json loads {} seconds".format(result)
    result = min(repeat("simplejson.loads(compare_json_and_simplejson.dump)", "from __main__ import simplejson, compare_json_and_simplejson", 
                 repeat = REPEAT, number = NUMBER))
    print "simplejson loads {} seconds".format(result)


print "Complex real world data:" 
COMPLEX_DATA = {'status': 1, 'timestamp': 1362323499.23, 'site_code': 'testing123', 'remote_address': '212.179.220.18', 'input_text': u'ny monday for less than \u20aa123', 'locale_value': 'UK', 'eva_version': 'v1.0.3286', 'message': 'Successful Parse', 'muuid1': '11e2-8414-a5e9e0fd-95a6-12313913cc26', 'api_reply': {"api_reply": {"Money": {"Currency": "ILS", "Amount": "123", "Restriction": "Less"}, "ProcessedText": "ny monday for less than \\u20aa123", "Locations": [{"Index": 0, "Derived From": "Default", "Home": "Default", "Departure": {"Date": "2013-03-04"}, "Next": 10}, {"Arrival": {"Date": "2013-03-04", "Calculated": True}, "Index": 10, "All Airports Code": "NYC", "Airports": "EWR,JFK,LGA,PHL", "Name": "New York City, New York, United States (GID=5128581)", "Latitude": 40.71427, "Country": "US", "Type": "City", "Geoid": 5128581, "Longitude": -74.00597}]}}}
compare_json_and_simplejson(COMPLEX_DATA)
print "\nSimple data:"
SIMPLE_DATA = [1, 2, 3, "asasd", {'a':'b'}]
compare_json_and_simplejson(SIMPLE_DATA)

এবং আমার সিস্টেমে ফলাফল (পাইথন ২.7.৪, লিনাক্স 64৪-বিট):

জটিল জগতের ডেটা:
জসন ডাম্প 1.56666707993 সেকেন্ড
সিম্পজসন ডাম্পস ২২.২63638841০৪64৪ সেকেন্ড
জেসন লোড করে ২.7১২568৮99৮৮৪৩ সেকেন্ড
simplejson লোড 1,29233884811 সেকেন্ড

সাধারণ ডেটা:
জেসন ডাম্প 0.370109081268 সেকেন্ড
সিম্পিজন ডাম্প 0.574181079865 সেকেন্ড
জেসন লোড হয় 0.422876119614 সেকেন্ড
সিম্পলসন লোড হয় 0.270955085754 সেকেন্ড

ডাম্পিংয়ের জন্য, এর jsonচেয়ে দ্রুত simplejson। লোড করার জন্য, simplejsonদ্রুত।

যেহেতু আমি বর্তমানে একটি ওয়েব পরিষেবা তৈরি করছি, dumps()এটি আরও গুরুত্বপূর্ণ — এবং একটি মানক লাইব্রেরি ব্যবহার সর্বদা পছন্দ করা হয়।

এছাড়াও, cjsonগত 4 বছরে আপডেট হয়নি, তাই আমি এটি স্পর্শ করব না।


এটি বিভ্রান্তিকর। নীচে আমার উত্তরটি কেন তা ব্যাখ্যা করে।
notbad.jpeg

2
আমার উইন 7 পিসিতে (আই 7 সিপিইউ), json(সিপিথন 3.5.0) simplejsonআপনার বেনমার্ক কোডটি ব্যবহার করে সি স্পীডআপ সহ সহজ | জটিল ডাম্পগুলিতে 68% | 45% দ্রুত এবং 35% | 17% দ্রুত wr অতএব, আমি এই সেটআপটি দিয়ে সিম্পজসন আর ব্যবহার করব না।
mab

1
আমি কেবল পাইথন 3.6.1 এ এটি চালিয়েছি এবং জিতেছি jsonবা সমস্ত পরীক্ষার জন্য একই। jsonজটিল রিয়েল ওয়ার্ল্ড ডেটা ডাম্প টেস্টের তুলনায় আসলে দ্বিগুণ চেয়ে কম!
সিপিআইএলএল

27

এই সমস্ত উত্তর খুব কার্যকর না কারণ তারা সময় সংবেদনশীল

আমার নিজের কিছু গবেষণা করার পরে আমি দেখতে পেলাম যে simplejsonএটি বিল্টিনের তুলনায় সত্যই দ্রুত, যদি আপনি এটি সর্বশেষতম সংস্করণে আপডেট রাখেন ।

pip/easy_installউবুন্টু ১২.০৪-তে ২.৩.২ ইনস্টল করতে চেয়েছিলেন, তবে সর্বশেষ simplejsonসংস্করণটি সন্ধান করার পরে আসলে ৩.৩.০, তাই আমি এটি আপডেট করেছি এবং সময় পরীক্ষার পুনরায় চেষ্টা করেছি।

  • simplejsonjsonলোড এ বিল্টিনের চেয়ে প্রায় 3x গতিযুক্ত
  • simplejsonjsonডাম্পগুলিতে বিল্টিনের তুলনায় প্রায় 30% দ্রুত

দাবি পরিত্যাগী:

উপরের বিবৃতিগুলি পাইথন -২.7.৩ এবং সিম্পজসন ৩.৩.০ (সি স্পিডআপস সহ) এবং আমার উত্তরটিও সময় সংবেদনশীল নয় তা নিশ্চিত করার জন্য, সংস্করণগুলির মধ্যে এত বেশি পরিবর্তিত হওয়ার কারণে আপনার নিজের পরীক্ষা চালানো উচিত ; এমন কোনও সহজ উত্তর নেই যা সময় সংবেদনশীল নয়।

সি স্পিডআপগুলি সিম্পজসনে সক্ষম করা হয়েছে কীভাবে তা বলবেন:

import simplejson
# If this is True, then c speedups are enabled.
print bool(getattr(simplejson, '_speedups', False))

আপডেট: আমি সম্প্রতি উজসন নামে একটি লাইব্রেরি জুড়ে এসেছি simplejsonযা কিছু বেসিক পরীক্ষাগুলির চেয়ে ~ 3x দ্রুততর সম্পাদন করছে ।


উজসন উল্লেখ করার জন্য ধন্যবাদ। এটি আমাকে অন্য লাইব্রেরি র‌্যাপিডজেএসনে নিয়ে যায় যা আরও ভাল রক্ষণাবেক্ষণ দেখায়
এমসিএমজেডএল

"সিম্পজসন ৩.৩.০ (সি স্পিডআপ সহ)" ওহ সত্যই? আরও সৎ হোন এবং সি স্পিডআপ ব্যতীত এটি পরীক্ষা করুন।
রিশিন

উজসন ব্যবহার করবেন না, এটি বাগ এবং মেমরি লিক এবং ক্র্যাশারে জঞ্জাল এবং বেশ কিছু সময়ের মধ্যে আপডেট করা হয়নি। আমরা এটি খনন করেছি এবং সিম্পলসনটিতে স্যুইচ করেছি কারণ এতে জসনের চেয়ে বেশি কার্যকারিতা রয়েছে এবং আপডেট হয়েছে
amohr

21

আমি জেনসন, সিম্পজসন এবং সিজেসনকে বেঞ্চমার্কিং করছি।

  • সিজেসন দ্রুততম
  • সিম্পজসন প্রায় সিজেসনের সাথে সমান
  • জেসন সিম্পজসনের চেয়ে প্রায় 10x ধীর

http://pastie.org/1507411 :

$ python test_serialization_speed.py 
--------------------
   Encoding Tests
--------------------
Encoding: 100000 x {'m': 'asdsasdqwqw', 't': 3}
[      json] 1.12385 seconds for 100000 runs. avg: 0.011239ms
[simplejson] 0.44356 seconds for 100000 runs. avg: 0.004436ms
[     cjson] 0.09593 seconds for 100000 runs. avg: 0.000959ms

Encoding: 10000 x {'m': [['0', 1, '2', 3, '4', 5, '6', 7, '8', 9, '10', 11, '12', 13, '14', 15, '16', 17, '18', 19], ['0', 1, '2', 3, '4', 5, '6', 7, '8', 9, '10', 11, '12', 13, '14', 15, '16', 17, '18', 19], ['0', 1, '2', 3, '4', 5, '6', 7, '8', 9, '10', 11, '12', 13, '14', 15, '16', 17, '18', 19], ['0', 1, '2', 3, '4', 5, '6', 7, '8', 9, '10', 11, '12', 13, '14', 15, '16', 17, '18', 19], ['0', 1, '2', 3, '4', 5, '6', 7, '8', 9, '10', 11, '12', 13, '14', 15, '16', 17, '18', 19], ['0', 1, '2', 3, '4', 5, '6', 7, '8', 9, '10', 11, '12', 13, '14', 15, '16', 17, '18', 19], ['0', 1, '2', 3, '4', 5, '6', 7, '8', 9, '10', 11, '12', 13, '14', 15, '16', 17, '18', 19], ['0', 1, '2', 3, '4', 5, '6', 7, '8', 9, '10', 11, '12', 13, '14', 15, '16', 17, '18', 19], ['0', 1, '2', 3, '4', 5, '6', 7, '8', 9, '10', 11, '12', 13, '14', 15, '16', 17, '18', 19], ['0', 1, '2', 3, '4', 5, '6', 7, '8', 9, '10', 11, '12', 13, '14', 15, '16', 17, '18', 19], ['0', 1, '2', 3, '4', 5, '6', 7, '8', 9, '10', 11, '12', 13, '14', 15, '16', 17, '18', 19], ['0', 1, '2', 3, '4', 5, '6', 7, '8', 9, '10', 11, '12', 13, '14', 15, '16', 17, '18', 19], ['0', 1, '2', 3, '4', 5, '6', 7, '8', 9, '10', 11, '12', 13, '14', 15, '16', 17, '18', 19], ['0', 1, '2', 3, '4', 5, '6', 7, '8', 9, '10', 11, '12', 13, '14', 15, '16', 17, '18', 19], ['0', 1, '2', 3, '4', 5, '6', 7, '8', 9, '10', 11, '12', 13, '14', 15, '16', 17, '18', 19], ['0', 1, '2', 3, '4', 5, '6', 7, '8', 9, '10', 11, '12', 13, '14', 15, '16', 17, '18', 19], ['0', 1, '2', 3, '4', 5, '6', 7, '8', 9, '10', 11, '12', 13, '14', 15, '16', 17, '18', 19], ['0', 1, '2', 3, '4', 5, '6', 7, '8', 9, '10', 11, '12', 13, '14', 15, '16', 17, '18', 19], ['0', 1, '2', 3, '4', 5, '6', 7, '8', 9, '10', 11, '12', 13, '14', 15, '16', 17, '18', 19], ['0', 1, '2', 3, '4', 5, '6', 7, '8', 9, '10', 11, '12', 13, '14', 15, '16', 17, '18', 19]], 't': 3}
[      json] 7.76628 seconds for 10000 runs. avg: 0.776628ms
[simplejson] 0.51179 seconds for 10000 runs. avg: 0.051179ms
[     cjson] 0.44362 seconds for 10000 runs. avg: 0.044362ms

--------------------
   Decoding Tests
--------------------
Decoding: 100000 x {"m": "asdsasdqwqw", "t": 3}
[      json] 3.32861 seconds for 100000 runs. avg: 0.033286ms
[simplejson] 0.37164 seconds for 100000 runs. avg: 0.003716ms
[     cjson] 0.03893 seconds for 100000 runs. avg: 0.000389ms

Decoding: 10000 x {"m": [["0", 1, "2", 3, "4", 5, "6", 7, "8", 9, "10", 11, "12", 13, "14", 15, "16", 17, "18", 19], ["0", 1, "2", 3, "4", 5, "6", 7, "8", 9, "10", 11, "12", 13, "14", 15, "16", 17, "18", 19], ["0", 1, "2", 3, "4", 5, "6", 7, "8", 9, "10", 11, "12", 13, "14", 15, "16", 17, "18", 19], ["0", 1, "2", 3, "4", 5, "6", 7, "8", 9, "10", 11, "12", 13, "14", 15, "16", 17, "18", 19], ["0", 1, "2", 3, "4", 5, "6", 7, "8", 9, "10", 11, "12", 13, "14", 15, "16", 17, "18", 19], ["0", 1, "2", 3, "4", 5, "6", 7, "8", 9, "10", 11, "12", 13, "14", 15, "16", 17, "18", 19], ["0", 1, "2", 3, "4", 5, "6", 7, "8", 9, "10", 11, "12", 13, "14", 15, "16", 17, "18", 19], ["0", 1, "2", 3, "4", 5, "6", 7, "8", 9, "10", 11, "12", 13, "14", 15, "16", 17, "18", 19], ["0", 1, "2", 3, "4", 5, "6", 7, "8", 9, "10", 11, "12", 13, "14", 15, "16", 17, "18", 19], ["0", 1, "2", 3, "4", 5, "6", 7, "8", 9, "10", 11, "12", 13, "14", 15, "16", 17, "18", 19], ["0", 1, "2", 3, "4", 5, "6", 7, "8", 9, "10", 11, "12", 13, "14", 15, "16", 17, "18", 19], ["0", 1, "2", 3, "4", 5, "6", 7, "8", 9, "10", 11, "12", 13, "14", 15, "16", 17, "18", 19], ["0", 1, "2", 3, "4", 5, "6", 7, "8", 9, "10", 11, "12", 13, "14", 15, "16", 17, "18", 19], ["0", 1, "2", 3, "4", 5, "6", 7, "8", 9, "10", 11, "12", 13, "14", 15, "16", 17, "18", 19], ["0", 1, "2", 3, "4", 5, "6", 7, "8", 9, "10", 11, "12", 13, "14", 15, "16", 17, "18", 19], ["0", 1, "2", 3, "4", 5, "6", 7, "8", 9, "10", 11, "12", 13, "14", 15, "16", 17, "18", 19], ["0", 1, "2", 3, "4", 5, "6", 7, "8", 9, "10", 11, "12", 13, "14", 15, "16", 17, "18", 19], ["0", 1, "2", 3, "4", 5, "6", 7, "8", 9, "10", 11, "12", 13, "14", 15, "16", 17, "18", 19], ["0", 1, "2", 3, "4", 5, "6", 7, "8", 9, "10", 11, "12", 13, "14", 15, "16", 17, "18", 19], ["0", 1, "2", 3, "4", 5, "6", 7, "8", 9, "10", 11, "12", 13, "14", 15, "16", 17, "18", 19]], "t": 3}
[      json] 37.26270 seconds for 10000 runs. avg: 3.726270ms
[simplejson] 0.56643 seconds for 10000 runs. avg: 0.056643ms
[     cjson] 0.33007 seconds for 10000 runs. avg: 0.033007ms

6
প্রকৃত পরীক্ষা মডিউল জন্য দয়া করে একটি pastie যোগ করুন।
তাল ওয়েইস

4
পাইথনের কোন সংস্করণ এবং প্রশ্নে লিবস?
এ্যানট্রপিক

6
এটি আর সত্য নয়। পাইথন 2.7 এ জসন হ'ল পারফরম্যান্স উন্নতি।
জেনগার

11

কিছু মান সিম্পজসন এবং জসন এর মধ্যে পৃথকভাবে সিরিয়ালযুক্ত হয়।

উল্লেখযোগ্যভাবে, উদাহরণগুলি collections.namedtupleঅ্যারে হিসাবে সিরিয়ালায়িত হয় jsonতবে বস্তু দ্বারা simplejson। আপনি পাশ দিয়ে এই আচরণ পাল্টাতে পারেন namedtuple_as_object=Falseকরার simplejson.dump, কিন্তু ডিফল্ট ভাবে আচরণ মিলছে না।

>>> import collections, simplejson, json
>>> TupleClass = collections.namedtuple("TupleClass", ("a", "b"))
>>> value = TupleClass(1, 2)
>>> json.dumps(value)
'[1, 2]'
>>> simplejson.dumps(value)
'{"a": 1, "b": 2}'
>>> simplejson.dumps(value, namedtuple_as_object=False)
'[1, 2]'

7

পাইথন ২.7 বনাম সিম্পজসন ৩.৩.১ সহ একটি এপিআই অসম্পূর্ণতা পেয়েছি আউটপুটটি স্ট্রিং বা ইউনিকোড অবজেক্ট তৈরি করে কিনা। যেমন

>>> from json import JSONDecoder
>>> jd = JSONDecoder()
>>> jd.decode("""{ "a":"b" }""")
{u'a': u'b'}

বনাম

>>> from simplejson import JSONDecoder
>>> jd = JSONDecoder()
>>> jd.decode("""{ "a":"b" }""")
{'a': 'b'}

যদি সিম্পলজসন ব্যবহারের পছন্দটি হয় তবে যুক্তি স্ট্রিংটিকে ইউনিকোডে চাপিয়ে দিয়ে এটিকে মোকাবেলা করা যেতে পারে, যেমন:

>>> from simplejson import JSONDecoder
>>> jd = JSONDecoder()
>>> jd.decode(unicode("""{ "a":"b" }""", "utf-8"))
{u'a': u'b'}

জবরদস্তির জন্য মূল চরসেটটি জানা দরকার, উদাহরণস্বরূপ:

>>> jd.decode(unicode("""{ "a": "ξηθννββωφρες" }"""))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xce in position 8: ordinal not in range(128)

এটিই 40 এর সমস্যা সমাধান করবে না


6

প্রকল্পগুলি সিম্পজসন ব্যবহার করার আরেকটি কারণ হ'ল বিল্টিন জেসন মূলত এর সি স্পিডআপগুলি অন্তর্ভুক্ত করেনি, সুতরাং পারফরম্যান্সের পার্থক্যটি লক্ষণীয় ছিল।


5

বিল্টিন jsonমডিউলটি পাইথন ২.6-এ অন্তর্ভুক্ত হয়েছে। পাইথন <2.6 এর সংস্করণগুলিকে সমর্থন করে এমন কোনও প্রকল্পের ফ্যালব্যাক হওয়া দরকার। অনেক ক্ষেত্রেই সেই ফ্যালব্যাক হয় simplejson


4

পাইথন জেসন লাইব্রেরির তুলনায় এখানে (এখন পুরানো)

পাইথনের জন্য জেএসএন মডিউলগুলির তুলনা ( সংরক্ষণাগার লিঙ্ক) )

এই তুলনার ফলাফল নির্বিশেষে আপনি পাইথন ২.6 এ থাকলে আপনার স্ট্যান্ডার্ড লাইব্রেরি json ব্যবহার করা উচিত। এবং .. পাশাপাশি কেবল অন্যথায় সিম্পজসন ব্যবহার করতে পারে।


2

সিম্পজসন মডিউলটি জসনের তুলনায় ১,৫ গুণ দ্রুত (আমার কম্পিউটারে সিম্পজসন ২.১.১ এবং পাইথন ২.7 x86 সহ)।

আপনি যদি চান, আপনি বেঞ্চমার্কটি চেষ্টা করতে পারেন: http://abral.altervista.org/jsonpickle-bench.zip আমার পিসিতে সিম্পলসন সিপিকেলের চেয়ে দ্রুত। আমি আপনার মানদণ্ডগুলিও জানতে চাই!

সম্ভবত, কোডি যেমন বলেছিলেন, সিম্পজসন এবং জসন এর মধ্যে পার্থক্য হ'ল সিম্পজসনটিতে _ স্পিডআপস.সি অন্তর্ভুক্ত রয়েছে। তো, পাইথন বিকাশকারীরা সিম্পজসন ব্যবহার করবেন না কেন?


2

Python3 মধ্যে, আপনি যদি একটি স্ট্রিং b'bytes'সঙ্গে jsonআপনি করতে হবে .decode()বিষয়বস্তু আগে আপনি এটা লোড করতে পারেন। simplejsonআপনি যত্ন নিতে পারেন যাতে এটি যত্ন নেয় simplejson.loads(byte_string)


সংস্করণ 3.6 এ পরিবর্তিত: গুলি এখন টাইপ বাইট বা বাইটারি হতে পারে। ইনপুট এনকোডিংটি ইউটিএফ -8, ইউটিএফ -16 বা ইউটিএফ -32 হওয়া উচিত।
ম্যাথিউ লংটিন

1

json চেয়ে দ্রুত বলে মনে হচ্ছে simplejsonসর্বশেষ সংস্করণে বোঝা এবং ডাম্প উভয়ের ক্ষেত্রেই

পরীক্ষিত সংস্করণ:

  • অজগর: 3.6.8
  • json: 2.0.9
  • সিম্পজসন: 3.16.0

ফলাফল:

>>> def test(obj, call, data, times):
...   s = datetime.now()
...   print("calling: ", call, " in ", obj, " ", times, " times") 
...   for _ in range(times):
...     r = getattr(obj, call)(data)
...   e = datetime.now()
...   print("total time: ", str(e-s))
...   return r

>>> test(json, "dumps", data, 10000)
calling:  dumps  in  <module 'json' from 'C:\\Users\\jophine.antony\\AppData\\Local\\Programs\\Python\\Python36-32\\lib\\json\\__init__.py'>   10000  times
total time:  0:00:00.054857

>>> test(simplejson, "dumps", data, 10000)
calling:  dumps  in  <module 'simplejson' from 'C:\\Users\\jophine.antony\\AppData\\Local\\Programs\\Python\\Python36-32\\lib\\site-packages\\simplejson\\__init__.py'>   10000  times
total time:  0:00:00.419895
'{"1": 100, "2": "acs", "3.5": 3.5567, "d": [1, "23"], "e": {"a": "A"}}'

>>> test(json, "loads", strdata, 1000)
calling:  loads  in  <module 'json' from 'C:\\Users\\jophine.antony\\AppData\\Local\\Programs\\Python\\Python36-32\\lib\\json\\__init__.py'>   1000  times
total time:  0:00:00.004985
{'1': 100, '2': 'acs', '3.5': 3.5567, 'd': [1, '23'], 'e': {'a': 'A'}}

>>> test(simplejson, "loads", strdata, 1000)
calling:  loads  in  <module 'simplejson' from 'C:\\Users\\jophine.antony\\AppData\\Local\\Programs\\Python\\Python36-32\\lib\\site-packages\\simplejson\\__init__.py'>   1000  times
total time:  0:00:00.040890
{'1': 100, '2': 'acs', '3.5': 3.5567, 'd': [1, '23'], 'e': {'a': 'A'}}

সংস্করণগুলির জন্য:

  • অজগর: 3.7.4
  • json: 2.0.9
  • সিম্পজসন: 3.17.0

ডাম্প অপারেশনের সময় জেসন সিম্পজসনের চেয়ে দ্রুত ছিল তবে লোড অপারেশনের সময় উভয়ই একই গতি বজায় রেখেছিল


0

পাইথন ২.6-এর জন্য সিম্পজসন ইনস্টল করতে গিয়ে আমি এই প্রশ্নটি জুড়ে এসেছি। অর্ডারডিক্ট হিসাবে কোনও জেসন ফাইল লোড করার জন্য আমার জেসন.লোড () এর 'অবজেক্ট_পেইস_হুক' ব্যবহার করা দরকার। পাইথনের আরও সাম্প্রতিক সংস্করণগুলির সাথে পরিচিত হয়ে আমি বুঝতে পারি নি যে পাইথন ২.6 এর জেএসন মডিউলটিতে 'অবজেক্ট_পেইস_হুক' অন্তর্ভুক্ত নেই তাই এই উদ্দেশ্যে আমাকে সরলজসন ইনস্টল করতে হয়েছিল। ব্যক্তিগত অভিজ্ঞতা থেকে এই কারণেই আমি স্ট্যান্ডার্ড জেসন মডিউলটির বিপরীতে সিম্পজসন ব্যবহার করি।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.