This is very fast:
my $tz = DateTime::TimeZone -> new (name => 'Europe/Amsterdam');
my $dt = DateTime:: -> from_epoch (epoch => time);
my $x = $tz -> offset_for_datetime ($dt);
taking only a millisecond or so.
Making a slight change:
my $tz = DateTime::TimeZone -> new (name => 'Europe/Amsterdam');
my $dt = DateTime:: -> from_epoch (epoch => 1800 * time);
my $x = $tz -> offset_for_datetime ($dt);
and the code runs more than 3 minutes before it completes.