Skip to content

Instantly share code, notes, and snippets.

@rodrigograca31
Created April 7, 2020 16:28
Show Gist options
  • Save rodrigograca31/57b5d3d3464b5886720aa25419a7fbe4 to your computer and use it in GitHub Desktop.
Save rodrigograca31/57b5d3d3464b5886720aa25419a7fbe4 to your computer and use it in GitHub Desktop.
🐍 Python set() algo perf test
#!/usr/bin/env python3
phrase = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer non lorem nec ante commodo gravida. Aenean ut ultricies quam. Nullam euismod lorem quis dapibus pharetra. Vestibulum a tincidunt justo. Proin eget faucibus velit. Aenean tincidunt lorem non ex molestie gravida vitae feugiat diam. In venenatis lacus non ipsum convallis porttitor nec vitae erat. Proin auctor, nibh ac hendrerit tempor, arcu lacus interdum erat, sit amet hendrerit mi dolor nec sapien. Maecenas mi dui, viverra ac imperdiet et, auctor id libero. Nunc sit amet felis lacus. Nunc vitae erat sit amet nunc porttitor lacinia vitae nec neque. Praesent tortor diam, molestie volutpat rhoncus et, fermentum a odio. Etiam et felis eget purus semper fermentum. In finibus ex in convallis pellentesque. Praesent fringilla massa ac dictum malesuada. Maecenas nec massa vitae mi porta sodales. Aenean blandit massa vitae leo finibus venenatis. In hac habitasse platea dictumst. Suspendisse eget orci ultrices justo malesuada aliquet id in risus. Suspendisse nec tellus dolor. Sed sit amet est pretium, imperdiet nisi at, accumsan sem. Sed sed scelerisque lacus. Fusce aliquam libero odio. Aliquam a fringilla arcu. Nullam finibus pharetra varius. Ut diam orci, tincidunt at iaculis ut, feugiat quis libero. Ut ut tellus nec tortor cursus efficitur id sed elit. Nulla convallis faucibus ex nec suscipit. Nulla facilisi. Integer ut eros volutpat est consectetur vehicula a vitae nibh. Duis non sem tortor. Vestibulum rhoncus ex at ipsum molestie, consequat pulvinar dui congue. Integer pulvinar auctor nisi, vitae congue magna malesuada a. Integer lectus nunc, rutrum sed enim in, consectetur placerat sem. Maecenas hendrerit nisl sit amet scelerisque interdum. Sed nec tortor ut neque molestie porttitor. Ut lobortis nulla lacus, non commodo nibh elementum quis. Sed et condimentum elit. Mauris blandit tellus ut aliquet blandit. In et diam at orci faucibus interdum sodales in nulla. Ut suscipit ut eros pulvinar molestie. Aenean dictum elit ut enim blandit, vitae porttitor augue imperdiet. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nam erat ipsum, molestie quis pellentesque sit amet, tristique ut arcu. Curabitur at libero sed metus congue finibus a ac purus. Pellentesque arcu erat, pretium nec orci vel, sollicitudin convallis orci. Vestibulum porttitor eget ipsum vitae dignissim. Donec sed posuere nulla. Fusce nec erat in leo interdum porttitor non eu libero. Nulla facilisi. Pellentesque sagittis nisi ante, maximus pretium felis ultricies ac. Phasellus sit amet dui aliquet, suscipit mi laoreet, vulputate risus. Nam ut arcu eros. Quisque elementum tellus a nulla accumsan euismod. Aliquam et tristique elit, sit amet commodo nisi. In nunc nisl, efficitur porttitor vestibulum a, accumsan eu neque."
def allUnique1(phrase):
for char in phrase.lower():
if phrase.count(char) > 1:
return False
return True
def allUnique15(phrase):
# make it lowercase first
phrase = phrase.lower()
for char in phrase:
if phrase.count(char) > 1:
return False
return True
def allUnique175(phrase):
for char in phrase:
if phrase.count(char) > 1 or phrase.count(char.lower()):
return False
return True
# using set:
def allUnique2(str):
str = str.lower()
prev_chars = set()
for char in str:
if char in prev_chars:
return False
prev_chars.add(char)
return True
def allUnique3(str):
str = str.lower()
visited_characters = []
for char in str:
if char in visited_characters:
return False
visited_characters.append(char)
return True
def emma(x):
y = list(x.upper())
z = []
for i in y:
if i not in z:
z.append(i)
if len(y) == len(z):
return True
else:
return False
def is_unique2(str):
str_list = list(str)
for i in range(len(str_list)):
if str_list[i] in str_list[i + 1 :]:
return False
return True
def is_unique3(str):
return len(str) == len(set(str))
import time
times = 5000
start = time.time()
for x in range(times):
(allUnique1(phrase))
print("Rod: \t%.8f" % float(time.time() - start))
start = time.time()
for x in range(times):
(allUnique15(phrase))
print("Rod 2: \t%.8f" % float(time.time() - start))
start = time.time()
for x in range(times):
(allUnique175(phrase))
print("Rod 3: \t%.8f" % float(time.time() - start))
start = time.time()
for x in range(times):
(allUnique2(phrase))
print("Set: \t%.8f" % float(time.time() - start))
start = time.time()
for x in range(times):
(allUnique3(phrase))
print("List: \t%.8f" % float(time.time() - start))
start = time.time()
for x in range(times):
(emma(phrase))
print("Emma: \t%.8f" % float(time.time() - start))
start = time.time()
for x in range(times):
(is_unique2(phrase))
print("Vic 2: \t%.8f" % float(time.time() - start))
start = time.time()
for x in range(times):
(is_unique3(phrase))
print("Vic 3: \t%.8f" % float(time.time() - start))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment