Created
April 7, 2020 16:28
-
-
Save rodrigograca31/57b5d3d3464b5886720aa25419a7fbe4 to your computer and use it in GitHub Desktop.
π Python set() algo perf test
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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