I am trying to optimize my users experience and I am not sure how to troubleshoot performance of my app. My biggest pain point is when users do a bunch of Patch to a Azure SQL DB. I am reading values from a local collection and then creating records in a table via patch. Sometimes I am lucky and it does 4 per second, sometimes I am unlucky and it is 4 seconds per record. Also the fact that it is really inconsistent is frustrating for users. Here is me prime offender code. It is usually acting upon a list of 10-15 rows. The second ForAll in the If is the thing that takes the most time. After the code is a shot of the table that includes time.
UpdateContext({LCVisible: false});
If(
'Attendance Class Name Dropdown'.Selected.Activity_x0020_Name = "Garderie after Activity",
ForAll(
Roster,
Patch(
'[dbo].[Daily Activity Attendance]',
LookUp(
'[dbo].[Daily Activity Attendance]',
DailyAttUID = User_x0020_ID && 'AttendanceDate String' = TodayVar
),
{
ActivityTwo: 'Attendance Class Name Dropdown'.Selected.ActivityID,
ActivityTwoSigninTime: Text(
Now(),
"[$-en-US]hh:mm:ss"
)
}
)
),
ForAll(
Roster,
If(
IsBlank(
LookUp(
'[dbo].[Daily Activity Attendance]',
DailyAttUID = User_x0020_ID && 'AttendanceDate String' = TodayVar
)
),
Patch(
'[dbo].[Daily Activity Attendance]',
Defaults('[dbo].[Daily Activity Attendance]'),
{
DailyAttUID: User_x0020_ID,
AttendanceDate: Today(),
ActivityOne: 'Attendance Class Name Dropdown'.Selected.ActivityID,
ActivityOneSigninTime: Text(
Now(),
"[$-en-US]hh:mm:ss"
)
}
),
Patch(
'[dbo].[Daily Activity Attendance]',
LookUp(
'[dbo].[Daily Activity Attendance]',
DailyAttUID = User_x0020_ID && 'AttendanceDate String' = TodayVar
),
{
ActivityOneSigninTime: Text(
Now(),
"[$-en-US]hh:mm:ss"
)
}
)
)
);
ForAll(
AbsentList,
If(
IsBlank(
LookUp(
'[dbo].[Daily Activity Attendance]',
DailyAttUID = User_x0020_ID && 'AttendanceDate String' = TodayVar
)
),
Patch(
'[dbo].[Daily Activity Attendance]',
Defaults('[dbo].[Daily Activity Attendance]'),
{
DailyAttUID: User_x0020_ID,
AttendanceDate: Today(),
ActivityOne: 'Attendance Class Name Dropdown'.Selected.ActivityID,
Absent: 1
}
),
Patch(
'[dbo].[Daily Activity Attendance]',
LookUp(
'[dbo].[Daily Activity Attendance]',
DailyAttUID = User_x0020_ID && 'AttendanceDate String' = TodayVar
),
{Absent: 1}
)
)
)
);
Patch(
'[dbo].[Activities]',
LookUp(
'[dbo].[Activities]',
ActivityID = 'Attendance Class Name Dropdown'.Selected.ActivityID
),
{AttTakenDate: Today()}
);
Refresh('[dbo].[Activities]');
Refresh('[dbo].[Activity View]');
Clear(ClassList);
Clear(AbsentList);
Clear(Roster);
UpdateContext({LCVisible: true})
Any suggestions on finding and fixing my bottleneck or just trying to trace performance issues. I can do this on a wired desktop with GB ethernet to fiber connection with less than 25 ms ping to powerapps.com. I don't think it is my network but I am open to help on that. The quantity of data is tiny we are talking KB of data.
Brian Hoyt