Comments (3)
@WillPCowan it's a good idea for the custom handler, @carlosmiei how do you think we migrate this map struct into exchange base?
from ccxt.
For reference, I got ChatGPT to do a little test on this and there is a lot of variance, but putting the map into an instance variable is 2-5x faster:
With the adjusted parameters of 100,000 events and 100 trials, the average time taken for each event handler is:
• With event-to-handler map as an instance variable: 0.0179 seconds
• Without event-to-handler map as an instance variable (constructed in each call): 0.0525 seconds
import timeit
import random
# Define both classes
class EventHandlerWithMap:
def __init__(self):
self.event_to_handler = {
"event_1": self.handle_event_1,
"event_2": self.handle_event_2,
"event_3": self.handle_event_3
}
def handle_event(self, event):
handler = self.event_to_handler.get(event)
if handler:
handler()
else:
pass
def handle_event_1(self):
pass
def handle_event_2(self):
pass
def handle_event_3(self):
pass
class EventHandlerWithoutMap:
def __init__(self):
pass
def handle_event(self, event):
event_to_handler = {
"event_1": self.handle_event_1,
"event_2": self.handle_event_2,
"event_3": self.handle_event_3
}
handler = event_to_handler.get(event)
if handler:
handler()
else:
pass
def handle_event_1(self):
pass
def handle_event_2(self):
pass
def handle_event_3(self):
pass
# Prepare random events
num_events = 100000
events = ["event_1", "event_2", "event_3"]
random_events = [random.choice(events) for _ in range(num_events)]
# Define the test functions
def test_with_map():
handler = EventHandlerWithMap()
for event in random_events:
handler.handle_event(event)
def test_without_map():
handler = EventHandlerWithoutMap()
for event in random_events:
handler.handle_event(event)
# Measure the time using timeit
num_trials = 100
time_with_map = timeit.timeit(test_with_map, number=num_trials)
time_without_map = timeit.timeit(test_without_map, number=num_trials)
avg_time_with_map = time_with_map / num_trials
avg_time_without_map = time_without_map / num_trials
avg_time_with_map, avg_time_without_map
from ccxt.
if there is a performance gain, then it would be a good move.
from ccxt.
Related Issues (20)
- Bybit CreateOrderWs with bound IP Address HOT 3
- Add Upbit private websocket connection HOT 7
- Coinbase fetch_accounts_v3 limit of 100 breaks deposit() HOT 2
- New exchange: Hashkey
- New Exchange: Backpack
- New Exchange: Robinhood
- The order amount must exceed 0.1 USDT while making a trade of 3 USDT HOT 16
- HTX: authentication error in C# HOT 4
- Binance successfully authenticates with the first request, then authentication error comes with the second request HOT 6
- Bitget WatchOrders for Margin does not work HOT 8
- Bitget Cancel order does not work for Margin orders. HOT 3
- ccxtpro watch_orders missing filled orders HOT 14
- Bybit fetch_trades ignores "since" parameter HOT 2
- C# Bitfinex2: System.InvalidCastException : Unable to cast object of type 'System.Collections.Generic.List`1[System.Object]' to type 'System.Collections.Generic.Dictionary`2[System.String,System.Object]' HOT 16
- RequestTimeout: kucoin GET https://api.kucoin.com/api/v3/currencies request timed out (30000 ms) HOT 3
- C# Bitfinex2 CreateOrder -> parseOrder returns empty Order object HOT 3
- i'm try to do a code, it use ccxt to create a bot trading in ftx, but it occur (Exception has occurred: AttributeError module 'ccxt' has no attribute 'ftx'. AttributeError: module 'ccxt' has no attribute 'ftx'). What shuold i do? . My code:exchange = ccxt.ftx({ "apiKey": secret.PUBLIC_KEY, "secret": secret.SECRET_KEY }) HOT 1
- error in ccxt HOT 1
- error when import talib HOT 1
- C# Bitstamp CreateOrder Content-Type header is not accepted + wrong nonce generation HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ccxt.