diff options
| author | yangwei <[email protected]> | 2024-04-01 19:23:00 +0800 |
|---|---|---|
| committer | yangwei <[email protected]> | 2024-04-01 19:23:00 +0800 |
| commit | 244dd655680aa1dbba160e009f191e7dff655abc (patch) | |
| tree | 5a3b9718925a3f6b2af71851668a9bf0ec0a4800 | |
| parent | 134ca507624c3ddf5163f002f1eee1473ee2b228 (diff) | |
🎈 perf(session_get0_current_packet): inline & unlikelyv1.0.18
| -rw-r--r-- | include/stellar/utils.h | 8 | ||||
| -rw-r--r-- | src/adapter/adapter.c | 9 |
2 files changed, 12 insertions, 5 deletions
diff --git a/include/stellar/utils.h b/include/stellar/utils.h index eb5e705..8158916 100644 --- a/include/stellar/utils.h +++ b/include/stellar/utils.h @@ -33,3 +33,11 @@ #ifndef __unused #define __unused __attribute__((__unused__)) #endif + +#ifndef likely +#define likely(x) __builtin_expect((x),1) +#endif /* likely */ + +#ifndef unlikely +#define unlikely(x) __builtin_expect((x),0) +#endif /* unlikely */ diff --git a/src/adapter/adapter.c b/src/adapter/adapter.c index ee7d9aa..6a400b6 100644 --- a/src/adapter/adapter.c +++ b/src/adapter/adapter.c @@ -317,10 +317,9 @@ void adapter_session_free(struct session *sess) unsigned char adapter_session_state_update(struct streaminfo *stream, struct session *sess, void *a_packet, enum session_state state) { struct packet *pkt = NULL; - if(sess) + if(likely(sess!=NULL)) { pkt=(struct packet *)session_get0_current_packet(sess); - pkt->raw_pkt=(void *)get_current_rawpkt_from_streaminfo(stream); session_dispatch( sess, state, pkt); return APP_STATE_GIVEME; } @@ -378,10 +377,10 @@ const char *session_get0_current_payload(struct session *sess, size_t *payload_l } #include <assert.h> -const struct packet *session_get0_current_packet(struct session *sess) +inline const struct packet *session_get0_current_packet(struct session *sess) { - if(sess->cur_pkt == NULL || sess->cur_pkt->a_stream == NULL)return NULL; - sess->cur_pkt->raw_pkt=(void *)get_current_rawpkt_from_streaminfo(sess->cur_pkt->a_stream); + if(unlikely(sess->cur_pkt == NULL) || unlikely(sess->cur_pkt->a_stream == NULL))return NULL; + if(unlikely(sess->cur_pkt->raw_pkt==NULL))sess->cur_pkt->raw_pkt=(void *)get_current_rawpkt_from_streaminfo(sess->cur_pkt->a_stream); return sess->cur_pkt; } |
