mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-15 10:53:09 -06:00
Optimisation: prevent unnecessary redefinitions/reallocations
This commit is contained in:
parent
585bfeda12
commit
8ad13f0c0f
|
|
@ -77,7 +77,9 @@ func Backfill(
|
||||||
|
|
||||||
// Filter any event that's not from the requested room out.
|
// Filter any event that's not from the requested room out.
|
||||||
evs := make([]gomatrixserverlib.Event, 0)
|
evs := make([]gomatrixserverlib.Event, 0)
|
||||||
for _, ev := range res.Events {
|
|
||||||
|
var ev gomatrixserverlib.Event
|
||||||
|
for _, ev = range res.Events {
|
||||||
if ev.RoomID() == roomID {
|
if ev.RoomID() == roomID {
|
||||||
evs = append(evs, ev)
|
evs = append(evs, ev)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -497,6 +497,8 @@ func (r *RoomserverQueryAPI) scanEventTree(
|
||||||
) (resultNIDs []types.EventNID, err error) {
|
) (resultNIDs []types.EventNID, err error) {
|
||||||
var allowed bool
|
var allowed bool
|
||||||
var events []types.Event
|
var events []types.Event
|
||||||
|
var next []string
|
||||||
|
var pre string
|
||||||
|
|
||||||
resultNIDs = make([]types.EventNID, 0, limit)
|
resultNIDs = make([]types.EventNID, 0, limit)
|
||||||
|
|
||||||
|
|
@ -505,7 +507,10 @@ func (r *RoomserverQueryAPI) scanEventTree(
|
||||||
// "prev_event" key.
|
// "prev_event" key.
|
||||||
BFSLoop:
|
BFSLoop:
|
||||||
for len(front) > 0 {
|
for len(front) > 0 {
|
||||||
var next []string
|
// Prevent unnecessary allocations: reset the slice only when not empty.
|
||||||
|
if len(next) > 0 {
|
||||||
|
next = make([]string, 0)
|
||||||
|
}
|
||||||
// Retrieve the events to process from the database.
|
// Retrieve the events to process from the database.
|
||||||
events, err = r.DB.EventsFromIDs(ctx, front)
|
events, err = r.DB.EventsFromIDs(ctx, front)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -520,7 +525,7 @@ BFSLoop:
|
||||||
// Update the list of events to retrieve.
|
// Update the list of events to retrieve.
|
||||||
resultNIDs = append(resultNIDs, ev.EventNID)
|
resultNIDs = append(resultNIDs, ev.EventNID)
|
||||||
// Loop through the event's parents.
|
// Loop through the event's parents.
|
||||||
for _, pre := range ev.PrevEventIDs() {
|
for _, pre = range ev.PrevEventIDs() {
|
||||||
// Only add an event to the list of next events to process if it
|
// Only add an event to the list of next events to process if it
|
||||||
// hasn't been seen before.
|
// hasn't been seen before.
|
||||||
if !visited[pre] {
|
if !visited[pre] {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue